This was delivered for a client under NDA, so it is shown here without identifying details - the focus is on the architecture and the work performed, not the client identity.
The product is a real-estate investment platform with two connected surfaces: a Flutter investor app and a sponsor/admin portal. The investor side covers onboarding, identity verification status, bank verification, property discovery, investment review, portfolio snapshots, transaction history, milestones, project updates, and payouts. The sponsor side covers property intake, offering setup, funding dashboards, expenses, investor profiles, and user investments.
The core challenge was keeping regulated state consistent. A user can move through legal-name capture, eligibility, source-of-funds, KYC status, bank status, share selection, investment review, and payment submission. At the same time, sponsor operations need to see the same investment and funding state through dashboards, exports, profiles, and project records.
Underneath, the system connects a Next.js portal, Supabase/Postgres state, secure server routes, an Express core API, provider-backed KYC/bank/payment events, email/status notifications, and a separate Solidity/Hardhat verification backend. The backend layer manages offerings, SPV-style ledger records, payment webhooks/polling, Redis-backed polling state, and contracts for offering and Merkle-proof verification.
Because this is sensitive client fintech work, the public case study uses architecture diagrams instead of screenshots. That keeps the case study useful for technical buyers while protecting investor data, property details, bank information, and client identity.