← All work
LIVE

Milutina Milankovića 130

A residential building's digital portal — voting, issue tracking, financial reports, and verified-resident onboarding.

Client work 2026 Astro 6 (SSR)Cloudflare PagesD1 + Drizzle ORMR2Tailwind v4
Visit live site ↗
Milutina Milankovića 130 — screenshot

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.