All work

Doodi

Building management app

A native app that gives a residential building one place to live: tenants, house committee and service providers, each with their own dashboard and permission set.

Role
Product · UX/UI · Full-stack
Type
iOS · Android
Stack
React Native · Expo · Supabase
Scope
118 screens · 3 user types

What it is

A residential building generates a surprising amount of coordination: monthly dues, faults, votes, documents, shared amenities and a maintenance schedule. Almost all of it happens in a WhatsApp group where nothing is recorded and nobody is accountable.

Doodi gives the building a single system with three user types and granular permissions - a tenant sees their own dues and can report a fault; a committee member manages residents, finances and suppliers; a service provider manages quotes, contracts and calls.

The problem

  • Building life lives in WhatsApp - Faults, payments and votes scattered across group chats
  • No shared record - Nobody can say who paid, who voted, what was decided
  • The committee works blind - No picture of the building fund or outstanding debts
  • Suppliers are informal - Quotes and contracts held in someone's phone

The solution

  • A dashboard per role - Tenant, committee member, service provider
  • Payments and faults tracked - With history and status
  • Votes and documents - Community decisions recorded
  • Amenities and maintenance - Bookings and a maintenance schedule

How it's built

App
React Native
Expo · native iOS and Android
Hebrew RTL
Data
Supabase
PostgreSQL · row-level security
realtime
Auth
Phone + password
Role- and building-scoped access
Scale
118 screens
Tenant · committee · provider
with assistant delegation
3user types with separate permissions
118screens
4content areas: payments, faults, votes, amenities

The screens

Joining a building

First run is the whole product in miniature. A four-step wizard sets up the profile, then asks the one question that decides everything else - which building are you in? A resident joins with a six-digit code the committee shares; a committee member creates the building instead. Getting this wrong means a resident who never reaches the app at all, so it's a wizard rather than a settings screen.

Doodi - Joining a building
Doodi - Joining a building
Doodi - Joining a building

Three roles, three dashboards

The same design system, three different jobs. A resident sees the building fund, their dues, open faults and votes waiting on them. A committee member sees registered residents against total apartments, income and expenses awaiting approval, and can share the join code. A service provider sees pending calls, monthly revenue, scheduled maintenance and contracts. Same shell, different permissions, different numbers.

Doodi - Three roles, three dashboards
Doodi - Three roles, three dashboards
Doodi - Three roles, three dashboards

Three menus, one grammar

Permissions are clearest in the menu. A resident gets nine sections; a committee member gets eighteen - every one of them a management surface; a service provider gets a business set: contracts, quotes, earnings, reviews. The sheet, the grid and the typography never change, so moving between roles never feels like a different product.

Doodi - Three menus, one grammar
Doodi - Three menus, one grammar
Doodi - Three menus, one grammar

The committee's working screens

Residents is a working tool, not a directory - outstanding debt, join code and one-tap call or WhatsApp per resident. Faults carries priority and status as separate badges so urgency and progress read independently. Votes shows a live tally against the quorum line, because a decision taken without quorum isn't a decision.

Doodi - The committee's working screens
Doodi - The committee's working screens
Doodi - The committee's working screens

One number, three places

The same 1,730 ₪ appears as the resident's balance due, as a line on their dashboard, and as outstanding debt on the committee's resident card. Charges group by billing run - 2 of 4 paid on the August dues, 0 of 1 on the lobby levy - so the committee reads collection progress without opening a report.

Doodi - One number, three places
Doodi - One number, three places
Doodi - One number, three places

Design decisions

01

  • Three roles, one system - A tenant, a committee member and a supplier need different products. They share a design system and a data model, not a screen.

02

  • Onboarding is the product - Joining a building by code and setting up a committee are first-run flows, not settings buried in a menu.

03

  • Native, not a wrapper - Faults get photographed, payments happen on the phone, notices need push. That argued for React Native over a web wrapper.

04

  • Hebrew RTL throughout - Layout, navigation and typography built right-to-left from the start.

05

  • Money demands a record - Every payment and every vote leaves a trail. In a shared building, an unrecorded decision is a dispute waiting to happen.
Next project
CyRook →
Get in touch