I design and ship production-ready backend systems — real infrastructure, real scale, real tradeoffs.
// Not chasing trends. Focused on depth, architecture, and systems that work in prod.
My code survives real production. Gunicorn crashes, OAuth callback loops, database connection limits — I've been there and fixed it. Every project is a real engineering exercise.
I approach every project from the backend — thinking about data flows, async tasks, and how things fail before I think about how they look. Clean architecture isn't a preference, it's a baseline.
When something breaks in production, I read logs, trace root causes, and document what I learn. Debugging real-world failures has taught me more than any tutorial ever could.
Deploying on Render with Gunicorn, configuring PostgreSQL connection pools, wiring Stripe webhooks live — I know what it takes to go from localhost to production.
Not side projects. Not tutorials repackaged. Systems designed with real requirements, real tradeoffs, and real deployments.
⚠ Problem: Build a secure, payment-enabled e-commerce platform that works beyond localhost.
A fully deployed, production-grade e-commerce application built with modular Flask architecture. Handles real users, real payments, and real authentication — deployed on Render with Gunicorn orchestrating multiple workers. Overcame production-specific issues including Gunicorn configuration, PostgreSQL connection pooling, environment variable management, and Stripe webhook verification.
⚠ Problem: Multi-role hotel operations — staff vs. guests vs. admin — with real booking logic.
Enterprise-grade hotel management system with a Django REST Framework API backend and a Next.js + React frontend. Implements JWT auth, role-based access control, and complex booking workflows with admin dashboards.
⚠ Problem: Handle async background tasks without blocking the main thread.
A backend-heavy expense management system built to explore Celery + Redis for asynchronous workflows. Reports, aggregations, and notifications are decoupled from the request lifecycle.
⚠ Problem: Deliver a fast, type-safe frontend that integrates cleanly with a DRF backend.
A fully typed Next.js frontend connected to a Django REST Framework backend. Implements SSR for SEO, Axios for API calls, and React Query for server state.
Not a list of things I've watched tutorials on. These are technologies I've debugged, deployed, and shipped.
Every serious engineer has a war room story. Here are mine. These aren't excuses — they're evidence that I've shipped real systems and survived.
The app factory pattern wasn't being called correctly. Gunicorn needs app:create_app() — not just app:app. Fixed by restructuring the entrypoint and documenting the correct Procfile syntax.
Google rejects OAuth requests when the redirect URI doesn't exactly match — including trailing slashes. Fixed by auditing all registered URIs in Google Cloud Console and enforcing consistent URL construction in Flask.
Each Gunicorn worker was opening its own connection pool without limits. Fixed by configuring SQLAlchemy pool_size and max_overflow, and switching to a DATABASE_URL with connection pooling constraints for Render's free tier.
Local Redis was hardcoded. Production requires an external Redis URL via environment variable. Fixed by centralizing all config behind environment variables and adding a RedisCloud URL to Render's environment dashboard.
Flask was reading the request body as JSON before Stripe's signature verification, consuming the raw bytes needed. Fixed by using request.get_data() instead of request.json in the webhook handler.
Local .env files don't ship with the code. Fixed by auditing all os.environ.get() calls, creating a config checklist, and using Render's environment variable dashboard.
I don't collect frameworks. I invest in fundamentals that compound — the kind of knowledge that makes you a better engineer at any stack.
Window functions, CTEs, query optimization, indexing strategies, and execution plan analysis. Understanding what the database is actually doing.
Load balancing, caching layers, message queues, database sharding, CAP theorem. How to architect systems that survive real-world traffic.
Designing Data-Intensive Applications — reading with focus. Storage engines, replication, consistency models. The canonical reference for serious backend engineers.
If you're looking for a backend-focused full-stack developer who ships production-ready systems, debugs like a detective, and gets better every week — let's talk.