Discordia is paused: in the meantime this domain hosts my portfolio.

All projects
personal

Notiziario

Digital signage for my school, with notices, timetables and weather on a TV and a timetable app for teachers.

Context

The school needed a simple way to show always-current information — notices, timetables, weather — on a TV in the hallways, and to give teachers their own timetable without having to look it up every time. Notiziario (“the bulletin”) is the system I built to do both.

The problem

A hallway display has to run on its own: nobody touches it for weeks, yet the content has to stay fresh. It needed to update remotely, come back by itself after a reboot or a power cut, keep working without internet, and be managed by someone non-technical from a dashboard.

And there was a second problem: the school hands out a single Excel sheet with everyone’s timetable. Finding yours means scrolling through it every time.

What I built

A server on a Raspberry Pi plugged into the TV, rotating notices, weather and a news ticker. The content comes from an admin dashboard reachable remotely and protected by two-factor authentication.

A timetable module that imports the Excel sheet and derives the timetable of every teacher, class and room. Timetables don’t appear on the TV, because they contain people’s names: they stay in the dashboard and in personal links.

A desktop app for teachers that shows their own timetable and works offline, keeping the last downloaded version. I shipped it as a Windows installer.

The system updates remotely and takes an automatic backup before every update, so a bad update never leaves the TV blank.

Technical choices

The server is PHP with MariaDB: a lean stack that runs fine on a Raspberry Pi. Sensitive data in the database is encrypted with AES-256-GCM, so having the database file alone isn’t enough to read it.

Remote access goes through a Cloudflare tunnel, so no ports are opened on the school router: the Raspberry Pi opens the connection outwards, not the other way round.

The teachers’ app is Python with Tkinter because it had to be light, work offline and install with nothing to configure.

Status

Finished. It’s the project that taught me the most about putting something in production that has to stay up with nobody watching it.