[ { "id": "url-shortener-easy", "name": "URL Shortener", "description": "Build a basic service to shorten URLs with a single backend.", "difficulty": "easy", "targetRps": 100, "durationSec": 60, "maxMonthlyUsd": 100, "maxP95LatencyMs": 200, "requiredAvailabilityPct": 99.0, "mustInclude": ["database"], "hints": ["Start with a basic backend and persistent storage."] }, { "id": "url-shortener-medium", "name": "URL Shortener", "description": "Scale your URL shortener to handle traffic spikes and ensure high availability.", "difficulty": "medium", "targetRps": 1000, "durationSec": 180, "maxMonthlyUsd": 300, "maxP95LatencyMs": 150, "requiredAvailabilityPct": 99.9, "mustInclude": ["database", "loadBalancer"], "encouragedComponents": ["cache"], "hints": ["Consider caching and horizontal scaling."] }, { "id": "url-shortener-hard", "name": "URL Shortener", "description": "Design a globally distributed URL shortening service with low latency and high availability.", "difficulty": "hard", "targetRps": 10000, "durationSec": 300, "maxMonthlyUsd": 1000, "maxP95LatencyMs": 100, "requiredAvailabilityPct": 99.99, "mustInclude": ["cdn", "database"], "encouragedComponents": ["cache", "messageQueue"], "hints": ["Think about write-path consistency and global replication."] }, { "id": "chat-app-easy", "name": "Chat App", "description": "Implement a simple chat app for small group communication.", "difficulty": "easy", "targetRps": 50, "durationSec": 120, "maxMonthlyUsd": 150, "maxP95LatencyMs": 300, "requiredAvailabilityPct": 99.0, "mustInclude": ["webserver", "database"], "hints": ["You don’t need to persist every message yet."] }, { "id": "chat-app-medium", "name": "Chat App", "description": "Support real-time chat across mobile and web, with message persistence.", "difficulty": "medium", "targetRps": 500, "durationSec": 300, "maxMonthlyUsd": 500, "maxP95LatencyMs": 200, "requiredAvailabilityPct": 99.9, "mustInclude": ["webserver", "database", "messageQueue"], "encouragedComponents": ["cache"], "hints": ["Ensure you decouple frontend from persistence."] }, { "id": "chat-app-hard", "name": "Chat App", "description": "Design a Slack-scale chat platform supporting typing indicators, read receipts, and delivery guarantees.", "difficulty": "hard", "targetRps": 5000, "durationSec": 600, "maxMonthlyUsd": 1500, "maxP95LatencyMs": 100, "requiredAvailabilityPct": 99.99, "mustInclude": ["messageQueue", "database"], "discouragedComponents": ["single-instance webserver"], "hints": ["Think about pub/sub, retries, and ordering guarantees."] }, { "id": "netflix-easy", "name": "Netflix Clone", "description": "Build a basic video streaming service with direct file access.", "difficulty": "easy", "targetRps": 200, "durationSec": 300, "maxMonthlyUsd": 500, "maxP95LatencyMs": 500, "requiredAvailabilityPct": 99.0, "mustInclude": ["cdn"], "hints": ["You don’t need full-blown adaptive streaming yet."] }, { "id": "netflix-medium", "name": "Netflix Clone", "description": "Add video transcoding, caching, and recommendations.", "difficulty": "medium", "targetRps": 1000, "durationSec": 600, "maxMonthlyUsd": 2000, "maxP95LatencyMs": 300, "requiredAvailabilityPct": 99.9, "mustInclude": ["cdn", "data pipeline", "cache"], "encouragedComponents": ["monitoring/alerting"], "hints": ["Think about asynchronous jobs and caching strategy."] }, { "id": "netflix-hard", "name": "Netflix Clone", "description": "Design a globally resilient, multi-region Netflix-scale system with intelligent failover and real-time telemetry.", "difficulty": "hard", "targetRps": 10000, "durationSec": 900, "maxMonthlyUsd": 10000, "maxP95LatencyMs": 200, "requiredAvailabilityPct": 99.999, "mustInclude": ["cdn", "data pipeline", "monitoring/alerting"], "encouragedComponents": ["messageQueue", "cache", "third party service"], "hints": ["You’ll need intelligent routing and fallback mechanisms."] }, { "id": "rate-limiter-easy", "name": "Rate Limiter", "description": "Build a basic in-memory rate limiter for a single instance service.", "difficulty": "easy", "targetRps": 200, "durationSec": 60, "maxMonthlyUsd": 50, "maxP95LatencyMs": 100, "requiredAvailabilityPct": 99.0, "mustInclude": ["webserver"], "hints": ["Use an in-memory store and sliding window or token bucket."] }, { "id": "rate-limiter-medium", "name": "Rate Limiter", "description": "Design a rate limiter that works across multiple instances and enforces global quotas.", "difficulty": "medium", "targetRps": 1000, "durationSec": 180, "maxMonthlyUsd": 300, "maxP95LatencyMs": 50, "requiredAvailabilityPct": 99.9, "mustInclude": ["webserver", "cache"], "encouragedComponents": ["messageQueue"], "hints": ["Consider Redis or distributed token buckets. Account for clock drift."] }, { "id": "rate-limiter-hard", "name": "Rate Limiter", "description": "Build a globally distributed rate limiter with per-user and per-region policies.", "difficulty": "hard", "targetRps": 5000, "durationSec": 300, "maxMonthlyUsd": 1000, "maxP95LatencyMs": 30, "requiredAvailabilityPct": 99.99, "mustInclude": ["cache"], "encouragedComponents": ["cdn", "data pipeline", "monitoring/alerting"], "hints": ["Ensure low latency despite distributed state. Avoid single points of failure."] }, { "id": "metrics-system-easy", "name": "Metrics System", "description": "Create a basic system that collects and stores custom app metrics locally.", "difficulty": "easy", "targetRps": 100, "durationSec": 120, "maxMonthlyUsd": 100, "maxP95LatencyMs": 200, "requiredAvailabilityPct": 99.0, "mustInclude": ["webserver", "database"], "hints": ["Start by storing metrics as timestamped values in a simple DB."] }, { "id": "metrics-system-medium", "name": "Metrics System", "description": "Design a pull-based metrics system like Prometheus that scrapes multiple services.", "difficulty": "medium", "targetRps": 1000, "durationSec": 300, "maxMonthlyUsd": 500, "maxP95LatencyMs": 100, "requiredAvailabilityPct": 99.9, "mustInclude": ["data pipeline", "monitoring/alerting"], "encouragedComponents": ["cache"], "hints": ["Consider time-series indexing and label-based queries."] }, { "id": "metrics-system-hard", "name": "Metrics System", "description": "Build a scalable, multi-tenant metrics platform with real-time alerts and dashboard support.", "difficulty": "hard", "targetRps": 5000, "durationSec": 600, "maxMonthlyUsd": 1500, "maxP95LatencyMs": 50, "requiredAvailabilityPct": 99.99, "mustInclude": ["monitoring/alerting", "data pipeline"], "encouragedComponents": ["messageQueue", "cache", "third party service"], "hints": ["Think about downsampling, alert thresholds, and dashboard queries."] } ]