Backend Engineering Projects

Every project below is a real backend problem teams hit in production - slow queries, race conditions, broken auth, leaking pools. Fix it in a live cloud workspace and it lands on your portfolio as a clickable proof point.

32 projects to build

Return the Correct HTTP Status CodeReturned 400 Bad Request for validation failures instead of 200 with an error body, so clients can branch on spythonflaskrest-apiRepair Broken API PaginationCorrected the OFFSET calculation ((page - 1) * limit) so page 1 returns the first 10 products instead of skippnodejsexpresspostgresqlAdd CORS Middleware to an Express APIWrote Express middleware that adds Access-Control-* headers on every response and short-circuits preflight OPTnodejsexpresscorsAdd a Health Check Endpoint in GoAdded GET /health that pings the DB connection and returns 200 healthy or 503 unhealthy with status - load-balgopostgresqlhttpBuild a URL Shortener APIShipped a two-endpoint URL shortener - POST /shorten returns 201 + short code, GET /s/<code> 302-redirects to pythonflasksqliteAdd JWT Authentication to an APIImplemented JWT issuance on /auth/login and a middleware that protects /api/* routes, returning 401 for missinpythonfastapijwtAdd a Rate Limiter to an APIBuilt a Redis-backed token-bucket rate limiter that allows 5 requests per minute per client and returns 429 wipythonfastapirate-limitingCache a Hot Read Path With RedisWrapped the expensive product-detail query with a Redis cache-aside layer (30s TTL) and invalidated on PUT so pythonfastapiredisSwitch to Cursor-Based PaginationReplaced page+offset pagination with keyset cursor pagination - stable when rows are inserted mid-scroll, O(1)pythonfastapipostgresqlTighten a Zod Validation Schema (TypeScript)Plugged the loose Zod schema on POST /api/orders that let through missing/wrong-typed fields and crashed the stypescriptnodejsfastifyProduce and Consume a Kafka TopicWired the producer.py + consumer.py against a local Redpanda broker - producer publishes 10 JSON-encoded orderpythonkafkaredpandaDrain an AWS SQS Queue Without DuplicatesAdded the missing `delete_message` call so processed messages stop reappearing in the queue when their visibilawssqspythonGenerate an AWS S3 Presigned Upload URLSwitched the presigner from `get_object` to `put_object` and gave it a non-zero expiry so the client's PUT actawss3boto3Honor an Idempotency-Key Header on POSTAdded an Idempotency-Key cache (in-memory dict) - the second POST with the same key short-circuits to the firspythonflaskidempotencySet an HTTP Client Timeout to Stop Cascading FailuresAdded an explicit `httpx.Timeout(connect=2, read=3)` to the outbound HTTP client so a hung downstream stops blpythonfastapihttpxUpload Images to AWS S3 via LambdaFilled in the Lambda handler so it base64-decodes the image from the event body and uploads it to the user-uplawss3lambdaFix a JWT Auth Bug That Accepts Any TokenClosed the JWT bypass by switching from options=verify_signature=False to jwt.decode(token, SECRET, algorithmsjwtauthsecurityResolve a Git Merge ConflictHand-resolved the `<<<<<<<` markers in main.py (kept the new TIMEOUT constant from the feature branch AND the gitmergeconflictBuild a Webhook Delivery System With RetriesBuilt a webhook delivery queue with exponential backoff retries, persistent attempt log, and a status API for pythonwebhooksretry-logicFix the N+1 QueryReplaced the per-order user lookup with a single JOIN (or batched WHERE IN), reducing 101 queries to 2 and respythonpostgresqlsqlStop a Double-Charge Race ConditionFixed the read-then-write race in /api/charge by wrapping the balance check + update in a transaction with SELpythonfastapipostgresqlInstrument an API With OpenTelemetryAdded OpenTelemetry instrumentation to the FastAPI service - automatic request spans, a custom span around thepythonfastapiopentelemetryStream Tokens Over Server-Sent Events (SSE)Converted the blocking /api/generate endpoint into a streaming SSE response that emits each token as it lands pythonfastapisseVerify a Stripe Webhook Signature (HMAC)Plugged the Stripe-webhook endpoint that trusted any request body - now verifies the Stripe-Signature header HpythonfastapistripePlug a Go Goroutine LeakFixed /api/work in the Go service that spawned an unbounded goroutine per request - added context cancellationgoconcurrencycontextMigrate an Express Route to FastifyReplaced the slow Express handler with a Fastify route that uses schema-based serialization - request throughptypescriptnodejsfastifyFix a Node.js Memory LeakBounded the requests array in app.js to the most recent 100 entries (shift() when over the cap) so the API no nodememory-leakperformanceFan Out Events With AWS SNS and SQSReplaced the order service's two direct HTTP fan-outs with a single SNS publish that two SQS queues subscribe awssnssqsAdd a NOT NULL Column With a Zero-Downtime BackfillShipped a three-step zero-downtime migration to add a NOT NULL `customer_segment` column to the orders table -pythonpostgresqlalembicRefactor Globals Into Dependency InjectionTurned three global singletons (DB pool, email client, clock) into FastAPI dependencies - handlers now take thpythonfastapidependency-injectionDesign a URL Shortener (System Design)Picked base62 of the SQLite row id, implemented `POST /shorten`, `GET /<code>` (302 redirect + click counter),backendsystem-designurl-shortenerDesign a Rate Limiter (Token Bucket)Picked token-bucket (capacity 10, refill 10/sec) and implemented `allow(client_id)` as a per-client bucket dicbackendrate-limitingsystem-design

Plus 31+ more Backend projects in the workspace, with new ones added regularly.

More for Backend engineers

Backend roadmapInterview questionsResume projectsCareer guide

Build your Backend portfolio free. Fix real systems in a live cloud workspace - every fix is yours to keep.

Start free →