A bunch of small, runnable Java/Spring projects that mirror common system design interviews.
-
URL shortener (Bitly-style) — evolves from “works on my laptop” to “scales reads” (HelloInterview: https://www.hellointerview.com/learn/system-design/problem-breakdowns/bitly)
- Overview: shortUrl
- Features:
- In-memory: shortUrl/simplestVersion
- Database-backed: shortUrl/databaseVersion
- Internal (in-process) cache: shortUrl/internalCachedVersion
- External cache (Redis): shortUrl/externalCachedVersion
-
Dropbox-style file storage & sync — upload flows + chunking + dedupe (HelloInterview: https://www.hellointerview.com/learn/system-design/problem-breakdowns/dropbox)
- Overview: dropbox
- Features:
- Naive server-proxied upload: dropbox/simplestVersion
- Presigned direct-to-S3: dropbox/directS3
- Multipart upload reference: dropbox/multipartUpload
- Content-addressed chunks: dropbox/chunkS3
- Rolling/content-defined chunking: dropbox/rollingChunks
-
External cache + observability (DynamoDB example) — a tiny app showing “slow vs cached” reads with metrics
-
Local delivery (GoPuff-style) — geo lookups + caching + read scaling (based on the HelloInterview breakdown: https://www.hellointerview.com/learn/system-design/problem-breakdowns/gopuff)
- Overview: localDelivery
- Features:
- Postgres + PostGIS geo queries: localDelivery/postgresGeo
- Redis GEO geo queries: localDelivery/redisGeo
- Redis grid caching for fast reads: localDelivery/cachingWithRedisGeo
- Postgres read replicas: localDelivery/postgresReadReplicas
- Cache + read replicas together: localDelivery/cacheWithReadReplicas
- Simple end-to-end service: localDelivery/simpleLocalDeliveryService
- More optimized end-to-end service: localDelivery/optimizedLocalDeliveryService
-
Ticketmaster UNDER DEVELOPMENT (based on hellowInterview: Ticketmaster)
under development for now see ticketmaster