LGKA+
It's the app my whole school checks before deciding whether to get out of bed. Which classes are cancelled, what's changed on the timetable, the school news — all of it on your phone in a tap, instead of squinting at a PDF taped to a wall.
More than 500 of the school's ~700 students open it every single morning. That number is the whole story: writing a substitution-plan app is easy, but getting an entire school to actually adopt one and keep it for over a year is the real problem — and the one I'm proudest of solving.
The full picture: substitution plans, personal timetables, school news and events, absence reporting, and local weather — the daily driver for Lessing-Gymnasium Karlsruhe.
The users
Over 500 of roughly 700 students use it daily — on school-managed devices and personal phones alike. That number is the hard part. Anyone can build a substitution-plan app; getting a whole school to adopt one, keep it installed, and open it every morning for over a year is the actual engineering problem. The feedback loop is brutal and wonderful: if something breaks, I hear about it in the hallway within minutes.
What it does
- Substitution plans, parsed from the school's PDFs into something readable on a phone
- Personal timetables — class-aware, with cross-PDF search that jumps straight to your class
- School news and events, scraped from the school's website
- Absence reporting, so sick notes don't require a phone call at 7 a.m.
- Local weather with animated backgrounds, hourly view and a 3-day forecast (Open-Meteo, pinned to the school's coordinates)
- Fully bilingual German and English, with theming down to the accent color
The numbers
1,071 commits, one codebase for iOS and Android. It shipped in June 2025, grew through v2.5.0 over the following ten months, and has been in continuous daily use ever since. These days it's stable and feature-complete — it does its job, and it gets touched when the school changes something, not because it needs rescuing.
Stack
Flutter and Dart, and no backend at all. The app parses the school's substitution PDFs and scrapes its website entirely on the device — nothing of mine sits between the school and the student. PDF parsing does the unglamorous heavy lifting.