Milutina Milankovića 130
A residential building's digital portal — voting, issue tracking, financial reports, and verified-resident onboarding.
Most residential buildings run on a cork board in the lobby and a group chat nobody reads. One building in New Belgrade got a portal with voting, issue tracking, and financial reports instead.
Context
The homeowners’ association of a residential building at Milutina Milankovića 130 needed what every building needs and almost none have: one place for announcements, resident voting, repair requests, finances, and photos — with residents verified before they see any of it. In practice, a private mini-SaaS for one address.
Decisions
- Residents are approved, not open-registered. Sign-up requests wait for an administrator; only verified neighbors see internal content. Role-based access (admin / resident) throughout.
- Voting that counts correctly. Polls with database-enforced constraints — one vote per resident, results visible per the board’s rules. Even Serbian plural grammar (glas / glasa / glasova) got its own logic.
- Issue reporting with photos. A resident photographs the broken light, uploads it, and tracks the repair status — the cork board can’t do that.
- Financial transparency as a feature. Monthly reports as downloadable PDFs in a permanent archive. Trust in a building is a UX problem too.
- The usual foundation: Astro SSR on Cloudflare, D1 through Drizzle ORM, R2 for images — infrastructure that costs the building council nothing per month.
Build
Built March–April 2026, then maintained like a real product: the schema evolved through 11 database migrations as the board asked for more (comments on issues, vote constraints, a financial archive), plus a security review, timezone bug fixes, and a homepage redesign. Playwright tests cover the flows. As always, AI agents wrote the code under my direction — and both the administrators and the residents got their own written guides.
Outcome
Live at milutinamilankovica130.com: announcements, polls, issue tracking, gallery, financial archive, and resident onboarding — running for one very organized building in New Belgrade.
Lesson
“Boring” clients make the best case studies: a building council has zero patience for software that almost works.