Confidential (property members club) · Fintech / Real estate
A members club where Ugandans co-own income-producing apartments from 1,000,000 UGX.
Category
Marketplace
Year
2025-2026
Capabilities
Full-Stack, Cloud & Automation
Industry
Fintech / Real estate


The problem
Most people in East Africa will never own an apartment, not for lack of savings, but because property sells in one indivisible lump. Capital is locked up for years, rental income means becoming a landlord, and there is no transparency on what a building actually earns.
Our approach
We built a two-sided members club: a vetted application and onboarding funnel, a wallet every shilling passes through, three ways to own, and an internal resale market for exits. Every financial decision routes through a real admin.
Inside the product
More than one screen.
The product name and data have been changed at the client's request; these screens recreate Brickfold as it was built.

Apartment marketplace
Units open for ownership with funding progress, yield and the minimum stake.

Vault
Every deposit, investment, rent credit and withdrawal in one exact ledger.

Approval desk
Admins approve every money movement and change platform rules without a release.
On the phone

Home

Apartment marketplace

Vault

Approval desk
How it is built
Architecture
Next.js and React with TanStack and typed server actions, over Supabase and PostgreSQL with Zod at the boundaries. Roughly 72,600 lines across 416 files and 211 reusable components. Wallet balances are enforced to always equal deposits minus investments minus withdrawals, and UGX is handled as whole shillings throughout, never floats.
Key features
Challenges & solutions
Where it got hard.
Challenge
Ownership had to stay exact across primary purchases, monthly rent splits and secondary trades, with no member ever short-changed by rounding.
Solution
Percentages are derived from actual amounts on every read rather than stored, and every split rounds down to the whole shilling so the platform never rounds in its own favour.
Challenge
A wallet holding real money can never drift, and no member could be allowed to see or reach an admin screen.
Solution
The ledger invariant, where balance equals deposits minus investments minus withdrawals, is enforced rather than assumed. The member and admin worlds are strictly separated in the product.
Challenge
Membership fees, minimums and resale fees needed to change with the business, not with the release cycle.
Solution
Every rule became an operational setting behind an admin panel, so the team adjusts the platform economics instantly.
Results
What shipping it changed.
Stack
Frontend
- Next.js
- React
- TypeScript
- TanStack
Styling
- TailwindCSS
- ShadCN
Backend
- Supabase
- PostgreSQL
- Zod
Messaging & Documents
- Resend
- pdf-lib
Analytics
- PostHog
Let's talk
We can usually tell within one call whether the approach above transfers to your problem, and what would need to change.