Skip to content
01Case studyEducation technologyLive

Real screens from the shipped product

Smart boards and corridor screens sit idle all day while announcements are still pinned to a cork board. DP Pano turns those screens into one live school board fed from a single panel. An administrator enters the content once — twenty-six modules update on every screen in the building, each in its own layout, within seconds.

Role
Product, design, architecture, engineering and deployment
System
Boards, timetable, duty roster, consent
Platform
Web panel and browser board screen
Status
Live, in active development
Version
v1.53.0
Modules
Twenty-six
For
K-12 schools
Interface
Turkish
The argumentDP Pano

The board takes the place of the blank screen, not the lesson.

Inside the productLive
One board: announcements, timetable, duty roster, menu and weather
01One board: announcements, timetable, duty roster, menu and weather
The staffroom screen: cover plan, bell schedule, the week's duties
02The staffroom screen: cover plan, bell schedule, the week's duties
The canteen screen: price list, today's offer, nutrition cards
03The canteen screen: price list, today's offer, nutrition cards
One school, several screens, each with its own layout
04One school, several screens, each with its own layout
What the system holdsShipped
  • 01Twenty-six board modules
  • 02Several screens per school, each with its own layout
  • 03A layout editor: six regions, two rotating slots each
  • 04Push to screen over server-sent events
  • 05Timetable, with a constraint solver behind it
  • 06Duty rotation, and a printable roster
  • 07Automatic cover for an absent teacher
  • 08Staff accounts with permission per module
  • 09Safe mode, screen PIN, network restriction, consent records

Every area listed is visible in the captures on this page. All of them were produced against demo data: there is no real pupil, teacher or school anywhere in this case study.

One school, several screens, each with its own layout
One school, several screens, each with its own layout
01

The problem

Keeping a school's noticeboard current is nobody's actual job. The printed notice goes stale in a week, the duty roster is shifted along by hand every Monday, and the timetable lives in a spreadsheet that changes without anyone being told.

Schools that do put something on a screen hit a second problem: the teacher closes the full-screen page on the way into a lesson, nobody opens it again afterwards, and the system is dead by the second week. On top of that, the personal-data rules arriving in 2026 made showing a pupil's name and photograph on a public screen a problem from the outset.

The layout editor: modules placed region by region
D/01The layout editor: modules placed region by region
02

It replaces the blank screen, not the lesson

Outside lesson time the board opens itself, full screen. The moment a teacher signs in, it steps back. Setting it up is a single step, and it asks the teacher to change nothing about how they work.

That is the whole answer to the second-week death: a system that needs somebody to remember it is a system that stops.

The weekly timetable: pick a lesson, the teacher resolves
D/02The weekly timetable: pick a lesson, the teacher resolves
03

One school, many boards

Separate screens are defined for the entrance hall, the staffroom, the canteen and the corridor. The content is held at school level and the screens differ only in layout: a notice entered once appears on every screen in that screen's own arrangement.

Updates are pushed from the server to the screen as they happen, over server-sent events. Nobody refreshes a page.

School-wide solver: a clash-free schedule for every class
D/03School-wide solver: a clash-free schedule for every class
04

A system that calculates, not just displays

The timetable is built by a constraint solver that produces a clash-free schedule: teacher availability, block lessons, rooms and elective pools all enter the same calculation.

The duty roster is distributed automatically on a zone-by-day rotation and prints as landscape A4, ready for the wall. When a teacher is absent, their lessons are shared among the people free at that hour on a fair measure — that day's load, plus how many covers they have taken in the last thirty days.

Automatic duty allocation — preview, and what it could not place
D/04Automatic duty allocation — preview, and what it could not place
What it is built onDP Pano
Backend
Python 3.13 · Flask 3 · SQLAlchemy + Alembic · JWT · APScheduler
Data
PostgreSQL · Redis (cache, pub/sub, rate limiting)
Real time
Server-sent events, on gunicorn + gevent
Front end
Jinja2 server rendering · vanilla JS · Tailwind CSS · Alpine.js
Solver
Google OR-Tools CP-SAT, with a pure-Python placement engine
Deployment
Docker · nginx · Coolify · gunicorn

Size, in the repository’s own units

~85
Database tables
38
Blueprints
41
Migrations
~1.700
Automated tests
~56.000
Lines of Python
~34.000
Lines of JS
Privacy is the default, not a layerDP Pano

A board goes live in safe mode: names, photographs and sensitive fields are not shown on a publicly visible screen. A screen PIN and a school-network restriction, an explicit consent record, a parent consent portal and access logs are part of the product itself.

It is not a compliance layer bolted on afterwards. It is the single door everything personal has to pass through on its way out.

StartOpen for new work

Tell me what you are trying to build and what is making it hard. If there is a fit I will say so quickly; if there is not, I will say that too.

01
A reply
Usually within two working days, from me.
02
A conversation
Scope, constraints, budget, timing. No pitch deck.
03
A straight answer
Including when I am the wrong person for it.
DP Pano — Education technology — Archon Soft