Inspiration

Every renter has the same story: the lobby light has been flickering for a month, the lift smells, the bike room lock is broken, and nobody reports it, because "someone else probably will." Building group chats are chaos. Notice boards get ignored. Management emails get lost in 400-resident threads where people are too shy, too busy, or too worried about their neighbours to speak up.

We kept asking: why is the place you sleep every night the place you have the least voice in?

Lobby is our answer. A hyper-local community platform for a single residential building. A shared space where management posts downward, residents raise issues upward, and a request only reaches management once enough neighbours have actually backed it. Anonymous by default, collective by design.


What It Does

Lobby is a mobile-first app with two roles built into one codebase.

For building managers: Create a building, set a support threshold (e.g. 40% of residents), and share a join code or QR with the building. Post announcements across categories - general, maintenance, safety, event - optionally pinned to the top of the feed. See your notifications inbox update the moment any request crosses the community threshold, plus a professionally written priority in your email. Resolve requests, edit announcements, and manage the resident roster from a single dashboard.

For residents: Join their building with a code or QR scan. Browse an anonymous-by-default feed of everything happening in their building. Post a new request in seconds. Tap to support a neighbour's request and watch a live progress bar fill toward the threshold. When it tips over, the whole building sees it go Priority.

The magic moment — automatic escalation:

When a request crosses the support threshold, the database itself promotes the request to priority, creates a manager notification, and enqueues a job in a priority_emails queue table. A server-side worker then claims the job and sends a formatted priority notice to management via Resend idempotently, so retries never double-send.


How We Built It

Lobby is a SvelteKit + Svelte 5 + Tailwind 4 app deployed on Vercel, backed by Supabase (Postgres, Auth, Realtime, Storage). Priority emails go out through Resend.

Realtime where it matters, invalidation everywhere else. Only the feed, request-detail, and manager notifications pages hold Supabase Realtime subscriptions. Everything else uses SvelteKit's invalidate() after mutations.


Our Main Challenge

48 hours, two roles, one app. Managers and residents share routes, layouts, and components but need completely different affordances. We solved this with a single authenticated layout loader that resolves profile, resident, and building once, then lets every page render role-aware UI from the same data.


What's Next for Lobby

Resident/Landlord/Property Manager/Building Manager Communication Ultimately, we want to facilitate holding body corporate accountable and ultimately enable residents to get *no less than what they paid for. Currently our app applies to building-wide accountability, but what about holding your landlord accountable? Our app has laid the groundwork for a larger purpose. Soon, we would like to empower resident's voices to be heard in every way.

** Dashboards ** Empower building managers who manage many buildings to flourish via a personalised dashboard. See and react to issues faster. Analyse your timeline. Get work done faster.

Multi-Language Support

Buildings are not monolingual. Auto-translate announcements and requests on the fly so no resident is excluded from the conversation based on the language of whoever posted first. Additionally, use Gemini to facilitate detecting duplicate posts automatically and making sure everyone's requests are nice and clear.

Want To Try?

Want to be a resident? Create your own account and join Oakwood Heights with the join code 76650d12d749 OR scan the QR code supplied in our media. Otherwise make an account as a building manager! If you would like to test as one of the demo accounts, please see the README in our repo.

Built With

  • framer-motion
  • google-gemini
  • lucide
  • postgres-rls
  • postgresql
  • resend
  • supabase
  • supabase-auth
  • supabase-realtime
  • supabase-storage
  • svelte
  • sveltekit
  • tailwindcss
  • typescript
  • vercel
Share this project:

Updates