01Marketplace app and platform · 2026 Lead case study
FDC One
The dance world, in one app.
A platform where dancers find classes, teachers find work and studios fill rooms. One Flutter app serves four kinds of user, backed by a real-time API, a web console for studios, a public website and an AWS edge built to production security standards.
- Role
- Technical lead: product design, mobile app, API, web console and cloud infrastructure
- Platforms
- iOS, Android, web
- Stack
- Flutter · Node.js · Express · MongoDB · Socket.IO · Next.js · Stripe Connect · AWS · Terraform
- Status
- Coming soon to the App Store and Google Play



- 4Roles in one app: members, teachers, studios and companies
- 190Routes across about 870 Dart files
- 57Blocs, one per unit of behaviour
- 5Parts: app, API, studio console, website, admin
The briefThree sides of one market
Dancers look for classes in one place, teachers look for work in another, and studios fill their rooms by word of mouth. FDC One puts all three in one app: members find and book classes and events, teachers discover jobs and get hired, and studios post a job and hire the right teacher fast. Companies hire for productions and events.
The promise fits on the icon: Find · Discover · Connect. Every screen had to earn its place against that.
Product designOne app, four people
Each role gets its own home, dashboard, profile and set-up, while chat, classes, events, jobs, wallet, notifications, help and reporting are shared. One account can hold several roles, so a teacher who also takes classes never needs a second login.
The visual system is deliberately small: near-black surfaces, one family of golds, one typeface bundled with the app and never downloaded at run time. Empty states use designed placeholders instead of stock photos, and no image carries words, so every label can be translated and read aloud.
Mobile engineeringA one-way street for data
The app is Flutter for iOS and Android from one codebase. A screen never calls the server. It sends an event to its bloc, the bloc calls a repository, the repository calls one API client, and typed models come back. That single rule keeps 190 routes understandable, and it lets new developers change a screen without learning the network layer.
Sign-in is by phone number and a four-digit SMS code with a short-lived pass that only unlocks the code screen. Push notifications open the exact screen they talk about, and crash reports arrive with the context needed to fix them.
PlatformThe API is the source of truth
Every business rule lives in one Node.js and Express API on MongoDB: accounts, roles, classes, events, jobs, bookings, payments, payouts, chat and notifications. Chat runs over Socket.IO. Card payments use Stripe Checkout, and teachers and studios are paid out through Stripe Connect, confirmed by webhooks rather than by the app. Online classes get a fresh Zoom link from the server, so no keys ever ship inside the app.
Studios get a web console for the jobs that are easier on a laptop: a term-long timetable builder, bookings with CSV export and one-tap messaging, earnings and payouts, a drag-to-block room calendar for Studio Hire, and front-desk check-in with the laptop camera.
Security and operationsBuilt like it will be attacked
The infrastructure is Terraform, reviewed as code before every apply. CloudFront fronts the website, the studio console and the API over TLS 1.2+, HTTP/2 and HTTP/3. AWS WAF adds managed rule sets and per-IP rate limits that are tightest on the sign-in routes. An origin lock means the servers only answer CloudFront, and each app reads only its own secret.
GuardDuty, Security Hub and AWS Config watch the account, alarms fire on error spikes and sign-in floods, and logs are encrypted, private and deleted after 90 days. The test environment sits behind a VPN, and live changes are applied by hand from a reviewed plan.
Architecture
Five parts, one source of truth.
The app never talks to the database or a provider directly. Everything goes through one API behind a locked-down edge.



What this means for your project
- MarketplacesMulti-role products where each side gets what it needs from the same data.
- Flutter at scaleA large app kept simple by one strict architecture rule and shared components.
- Payments and payoutsStripe Checkout and Connect with webhooks as the only source of truth.
- Production cloudTerraform-managed AWS with WAF, origin locking, secrets isolation and monitoring.