Sourav Kohli
PythonDjangoLinuxNginxDeploymentDebuggingVPSServer Config

Rescued a broken, half-finished app and got it stable and live in production.

Took over a broken, incomplete M&A web application, debugged and completed the codebase, hardened it for production, and deployed it to the client's private VPS including full server configuration.


The Situation

The client had moved fast during early product development — too fast. The codebase was a mix of partially implemented features, accumulated bugs, and deployment that had never been properly attempted. The project was stuck: the original developer had moved on, and the client had a product they couldn’t ship.

This is a specific kind of problem that requires a specific kind of engineer: someone who can navigate an unfamiliar, messy codebase under time pressure, diagnose issues without complete context, and not just fix what’s broken but finish what’s incomplete.

What I Did

Codebase triage: Inherited the repository with minimal documentation. Systematically mapped the intended functionality against the actual implementation, identifying the delta between “what it’s supposed to do” and “what it currently does.”

Bug resolution: Worked through the issue backlog methodically — reproducing bugs, identifying root causes (not just symptoms), and fixing them in a way that didn’t create new problems elsewhere. This is slower than applying patches but produces stable software.

Feature completion: Several features were partially built — the scaffolding existed but the core logic was missing or wrong. I completed these from the existing patterns in the codebase, respecting the original intent.

VPS deployment: Configured the client’s private VPS from scratch — server setup, Python environment, web server configuration (Nginx + Gunicorn), process management, and SSL. Wrote deployment documentation so the client could manage the server going forward.

Handover: Left the client with a working, deployed application and documentation covering the server setup and basic maintenance operations.

Why It Matters

The client described the project as chaotic but said I went above and beyond and recommended me without hesitation. That outcome — a client who says you made something that was failing into something that works, and trusts you enough to recommend you — is a better reference than a greenfield project that went smoothly.

The “rescue” scenario is common. Not every client comes with a clean spec and a fresh codebase. The ability to parachute into a broken situation, orient quickly, and ship something that works is a genuine and underrated skill.

Tech Stack

Python · Django · Linux · Nginx · Gunicorn · SSL · VPS · Server Config · Debugging · Deployment