Codetail

Projects

Input & Data Normalization

Phone Number Normalizer

You're building the user registration pipeline for a Kenyan fintech. Users type their numbers in every format imaginable. Your job: write a normalizer that accepts the mess and produces clean E.164, or rejects at the boundary before anything hits the database.

#PY-014·acme-apiBuildUtility15 min·Completed·PythonRegexE.164Input Validation

Production Utilities

Retry Utility with Exponential Backoff

You're integrating with a third-party geocoding API that drops requests under load. Rather than wrapping every call in ad-hoc try/except loops, you're building a shared retry() utility the whole team will use. It needs backoff, jitter, and a clear contract for which errors are worth retrying.

#API-031·acme-apiBuildComponent30 min·In progress·PythonBackoffJitterError Handling

API Engineering

Webhook Signature Validator

You're on the payments team. The endpoint that receives Paystack webhooks is wide open. Anyone who knows the URL can POST fake events and trigger order fulfillment. You're locking it down with HMAC signature validation and timestamp-based replay protection before this ships to production.

#SEC-007·acme-paymentsBuildComponent35 min·DjangoHMACWebhooksSecurity

Idempotent Payment Webhook Handler

You're fixing a live production bug. Paystack's delivery guarantee is at-least-once, and it's been biting you. The same webhook fires twice, two orders get created, and a customer gets charged double. You need to make the handler idempotent without touching the public API contract or the Paystack integration.

#PAY-142·acme-paymentsFixSystem60 min·DjangoIdempotencyWebhooksPostgreSQL

Django-Specific

N+1 Query Investigation

You've just joined the backend team. On your first week, the on-call alert fires: GET /api/orders/ is timing out under load. You pull the profiler output and see 1 + N database queries on every request. Your job is to find every N+1, fix them, and add assertions so the next engineer can't accidentally reintroduce them.

#DB-019·acme-shopDebugComponent45 min·Django ORMQuery Optimizationselect_relatedBenchmarking