Available for full-time roles

Rohan Malve Backend-Focused
Full-Stack Developer

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.

4+
Production Projects
10+
Technologies
1
Live Deployed App
Things Debugged

I don't build demos.
I build systems.

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.

⚙️

Engineering First

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.

🔍

I Learn by Debugging

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.

🏗️
Architecture over features A well-structured system is easier to extend than a pile of features.
Async by default Celery + Redis for long-running tasks. Don't block the request cycle.
🛡️
Security is not optional JWT, OAuth scopes, role-based access — baked in from day one.
📈
Depth over breadth Master the stack you have before jumping to the next shiny thing.
🚀

Ships to Production

Deploying on Render with Gunicorn, configuring PostgreSQL connection pools, wiring Stripe webhooks live — I know what it takes to go from localhost to production.

Projects built for
the real world

Not side projects. Not tutorials repackaged. Systems designed with real requirements, real tradeoffs, and real deployments.

Full Stack // 02

Hotel Management System

⚠ 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.

JWT authentication Role-based access control Booking engine & workflows Admin reporting dashboards
Django REST React Next.js JWT PostgreSQL
Backend Heavy // 03

Django Expense Tracker

⚠ 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.

Celery async task queue Redis message broker Automated reporting Django ORM data layer
Django Celery Redis PostgreSQL Python
Next.js + TypeScript // 04

Customer-Facing Hotel Website

⚠ 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.

Next.js TypeScript React Query Axios DRF Backend TailwindCSS

Tools I've used
under production pressure

Not a list of things I've watched tutorials on. These are technologies I've debugged, deployed, and shipped.

Backend
Python / Django
Django REST Framework
Flask
Celery + Redis
REST API Design
Frontend
React
Next.js
TypeScript
Redux / React Query
TailwindCSS
Database
PostgreSQL
SQLAlchemy / ORM
Redis
SQL (Queries & Design)
DB Indexing & Optimization
Tools & Infra
Git / GitHub
Docker
Render (Deployment)
Gunicorn / WSGI
Stripe API

Real bugs.
Real fixes. Real learning.

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.

💥

Gunicorn Worker Crash on Startup

Worker failed to boot
→ Root Cause

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 OAuth Callback Mismatch

redirect_uri_mismatch
→ Root Cause

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.

🗄️

PostgreSQL Connection Pool Exhaustion

FATAL: too many connections
→ Root Cause

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.

Redis Not Available in Production

Connection refused: 127.0.0.1:6379
→ Root Cause

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.

💳

Stripe Webhook Signature Failure

No signatures found matching expected
→ Root Cause

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.

🌍

Missing Environment Variables in Production

KeyError: 'SECRET_KEY'
→ Root Cause

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.

Currently going
deeper, not wider

I don't collect frameworks. I invest in fundamentals that compound — the kind of knowledge that makes you a better engineer at any stack.

🗄️

Advanced SQL

Window functions, CTEs, query optimization, indexing strategies, and execution plan analysis. Understanding what the database is actually doing.

Active
🏗️

System Design

Load balancing, caching layers, message queues, database sharding, CAP theorem. How to architect systems that survive real-world traffic.

Active
📖

DDIA

Designing Data-Intensive Applications — reading with focus. Storage engines, replication, consistency models. The canonical reference for serious backend engineers.

In Progress
// Engineering philosophy
while (alive) {
    read("fundamentals");
    build("real_systems");
    debug("production_issues");
    repeat();
}

Should I be on your
engineering team?

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.