Practice: Design Online Dating Platform
Dating app inspired by Tinder and Hinge: geohash-indexed discovery, a write-heavy swipe store with single-lookup mutual-like checks, matches created once per pair, precomputed ranked decks, chat only after a match, and photo moderation. A teaching design.
Build this system yourself on the canvas below. Add components, connect them, and run traffic simulations to see where your design holds up and where it breaks.
Functional requirements
- Users create and edit a profile with photos, a bio, their preferences and location
- Users browse a discovery feed of nearby profiles that match their age, distance and gender preferences
- Users swipe on profiles (like or pass); a mutual like creates a match and notifies both users
- Matched users chat in real time, and messages reach users who were offline when they come back
- Users can block and report others; blocked users never appear in their discovery feed or chats
- Spam, scams and harassment are detected automatically and flagged for review
Non-functional requirements
- Throughput: 20,000 requests/s at the evening peak (10M daily users × 50 requests/day, 3× in the evening), with spikes up to 5×
- Latency: responses within 500 ms; a match is created within 2 seconds of the mutual like
- Scale: 50M+ registered users, with profile photos served from the edge
- Availability: a regional outage fails over to the second region instead of taking the app down
- Privacy & safety: exact locations are never exposed, and blocks are enforced on every read and write
- Durability: profiles, matches and messages are never lost; backups are kept in a separate region