Yönetim PWA — The Boss's Panel on an iPad
The desktop panel lives on one Mac in the office and my father wanted it on the iPad he carries.
Role
I set one rule, that this stays identical to the desktop panel so my father never has to learn two panels, and I decided each of the exceptions. The transcription itself was driven with AI coding agents working from the Java classes and the same contract.
Stack

Overview
The desktop panel lives on one Mac in the office and my father wanted it on the iPad he carries. Rewriting it was out of the question, so this is a copy. Every screen was transcribed from its JavaFX class: same wording, same endpoints, same paging. Where the desktop had a bug, the copy reproduces the bug and a table in the docs records it for me to decide. Five days, 26 commits. It installs from a link as a PWA and needs no store.
What it does
- IA payment preview naming the months it closes, before anything is saved
- IIA warning, not a block, when the same amount is entered twice for one building in a day
- IIIThe ledger with cancelled payments still in it, each with its reason
- IVMaintenance debt and repair debt on separate tabs, settled separately
- VSession kept in the browser, so the home screen icon opens straight into the panel
Screens











Technical notes
- ICopying the panel screen for screen found a bug the desktop had been hiding. A styling quirk in JavaFX painted each visit's work item checklist white on a white card, so the boss had never once seen what a technician did on a visit. It was fixed in both apps on the same day, one of three exceptions to the rule that the copy never patches the original.
- IIOne thing was deliberately not copied. The desktop does no role check at login and relies on the server answering 403; on an installed app that is fine. On a URL that anyone with the address can open, a technician's own phone and password would have shown the admin panel, salaries included. The PWA refuses any session whose role isn't admin.
- IIIThe font is Gill Sans, on purpose. The design system says DM Sans, but DM Sans was never installed on the office Mac and JavaFX doesn't walk a fallback list, so the desktop has always drawn Gill Sans. Matching what the desktop actually renders beat matching what the spec says.
What I learned
Replicating bugs on purpose felt wrong and turned out to be the useful part. A copy that fixes things as it goes drifts, and then two panels disagree and nobody knows which number is right. Writing each defect down instead produced a list of eleven findings, and three of them were worth fixing in both apps.