Product and System Design Prompt: Cross-Device Photo Application
Design an application that lets users upload photos and seamlessly view, share, and download them across multiple devices.
Cover:
-
User scenarios and primary use cases.
-
MVP feature set, including functional and non-functional requirements.
-
System architecture:
-
Clients: mobile, web, and desktop.
-
Backend services and APIs.
-
Storage and data model.
-
Sync model across devices.
-
Scalability considerations and trade-offs.
Constraints & Assumptions
-
Focus on photos for MVP; video can be future scope unless you choose otherwise.
-
Privacy and access control must be correct.
-
Uploads should be reliable across flaky networks.
-
Sync can be eventually consistent for metadata, but sharing permissions should be strongly enforced.
-
Include thumbnails, deduplication, deletes, and offline or retry behavior.
Clarifying Questions to Ask
-
Is this a consumer backup app, collaborative album app, professional workflow, or enterprise media library?
-
What platforms are required for MVP?
-
What scale should we assume: users, photos per user, upload rate, and storage size?
-
Are edits, face recognition, search, or video in scope?
-
What privacy and compliance requirements apply?
Part 1 - User Scenarios and MVP
Define scenarios, use cases, and MVP features.
What This Part Should Cover
-
Backup, viewing, sharing, downloading, organizing, and multi-device access.
-
Manual and optional auto-upload.
-
Albums, favorites, thumbnails, search basics, share links or invited users.
-
Non-functional requirements such as reliability, privacy, performance, durability, and accessibility.
Part 2 - Architecture and Data Model
Design clients, backend services, APIs, storage, and data model.
What This Part Should Cover
-
Mobile/web/desktop clients.
-
Auth, upload, metadata, album, sharing, thumbnail, sync, and notification services.
-
Object storage for originals and derivatives.
-
Relational or document metadata store.
-
Tables or entities for users, devices, photos, assets, albums, permissions, and sync tokens.
Part 3 - Sync, Scale, and Trade-offs
Explain sync model, scalability, and trade-offs.
What This Part Should Cover
-
Resumable chunked upload, idempotency, deduplication, background processing, and offline retry.
-
Change log or sync tokens for clients.
-
Conflict handling for edits, deletes, albums, and sharing.
-
CDN, queues, workers, partitioning, caching, lifecycle storage, and cost controls.
-
Trade-offs among consistency, latency, cost, privacy, and feature scope.
What a Strong Answer Covers
A strong answer balances product requirements with system design. It should explain the user journeys, reliable upload pipeline, metadata and object storage separation, secure sharing, cross-device sync, and scaling trade-offs.
Follow-up Questions
-
How would you revoke a shared link reliably?
-
How would you handle duplicate uploads from multiple devices?
-
What happens if a user deletes a photo offline on one device?
-
How would you support search later?
-
How would your architecture change for video?