Skip to content

About

Mobile system design case studies for interviews and real projects: UPI payments, wearable sync, offline-first chat, feeds, live tracking, uploads, rollouts.

Topics

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

2 Commits

Folders and files

Repository files navigation

Mobile System Design

Read online CI License: MIT

Worked case studies for mobile system design interviews and real projects: payments, wearables, chat, feeds, live tracking, uploads and safe releases.

Most system design guides are about servers. Mobile rounds ask different questions:

  • What happens if the app is killed after the user entered their UPI PIN but before the result came back?
  • How does a fitness band's data reach the cloud exactly once, after a week offline, with a drifting clock?
  • How does a chat stay in order when phones' clocks are wrong and the network keeps dropping?
  • How do you ship safely when a mobile release can't be rolled back?

Each case study answers questions like these with diagrams, data models, APIs, failure modes and trade-offs, the way you'd explain them in an interview.

📖 Read it as a website, with search and dark mode, or browse the Markdown below.

The UPI payments case study on the website, showing the payment state machine diagram and the table of contents

Contents

Start here

  1. The framework: seven steps for any mobile design round, and the common mistakes
  2. Building blocks: offline-first reads, the outbox, conflicts, real-time updates, pagination, caching, tokens, background work
  3. Cheat sheet: one page for the night before

Case studies

Case study Difficulty You'll practise
UPI payments app 🔴 Senior Payment state machines, idempotency, reconciliation, device binding
Wearable health-data sync 🔴 Senior Bluetooth LE, background limits, deduplication, time zones, HealthKit and Health Connect
Offline-first chat 🟡 Mid – 🔴 Senior Outbox, ordering with sequence numbers, receipts, sockets and push
Infinite news feed 🟢 Junior – 🟡 Mid Cursor pagination, images, video, smooth lists, optimistic likes
Live ride tracking 🔴 Senior Location streams, trip state, smooth maps, battery
Resumable video upload 🟡 Mid – 🔴 Senior S3 multipart upload, presigned URLs, background transfers
Feature flags and staged rollouts 🟡 Mid – 🔴 Senior Remote config, kill switches, experiments, forced updates

Every case study has the same sections: requirements → estimates → architecture → data model → API → deep dives → failure modes → trade-offs → interview follow-ups.

How to use it

  • Preparing for an interview: read the framework, then for each case study read only the requirements, close the page and design it yourself in 45 minutes. Then compare, focusing on the failure modes you missed.
  • Interviewing others: each case study's follow-up questions make good probes, and the failure-mode table is a ready-made rubric.
  • Designing a real feature: the building blocks and failure-mode tables work as a review checklist.

The designs are platform-neutral, with notes where Android, iOS and Flutter differ.

Example: the payment state machine

stateDiagram-v2
    [*] --> Draft
    Draft --> Submitting: PIN entered
    Submitting --> Pending: 202 from backend
    Submitting --> Unknown: timeout or app killed
    Unknown --> Pending: status check finds it
    Unknown --> Failed: never started
    Pending --> Success
    Pending --> Failed
    Pending --> Reversed: debited, then refunded
Loading

The Unknown state is the one most designs forget. Read why it matters →

Contributing

Corrections, better trade-offs and new case studies are welcome. See CONTRIBUTING.md, or start a discussion about a design you'd approach differently.

Related

License

MIT. See LICENSE.

About

Mobile system design case studies for interviews and real projects: UPI payments, wearable sync, offline-first chat, feeds, live tracking, uploads, rollouts.

Topics

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages