
Full Stack Developer
Hi, I'm
Sridhar.
A Full Stack Developer from Chennai, India — now building in Doha, Qatar. Over the last three years I've designed and shipped systems across security, enterprise ERPs, e-commerce, healthcare, mobile apps and self-hosted AI — most of them end to end, as the only engineer on the project. Built to create impact.
- Python
- Django
- React
- PostgreSQL
- AWS
- 22
- Systems built
- 3+
- Years experience
- 5
- Client platforms live
- 7
- Problem domains

Clean Code
Secure Systems
AI Integrated
Performance
01Systems I build
Seven constraints, one builder.
Every project here is organised around a hard constraint. Hover a domain to see it light up — click to filter the work.
Featured systems
Eight systems, eight different problems.
Each flagship is organised around a genuinely different constraint — and drawn with a different visual grammar, because the architecture is what makes it interesting.
Also engineered
02Production client work
Shipped for real businesses.
Client platforms delivered end to end at Techynova for UK and Qatar businesses — architecture, backend, frontend, deployment and direct client communication.





What I do
Design, build and ship systems that last.
I partner with businesses and teams to build secure, reliable software — and I stay with it from the first schema sketch to the production server.
System design
Architecture that outlives the framework — clean boundaries, metadata-driven design, event sourcing.
Backend development
Django REST services with versioned contracts, JWT authentication and role-based access control.
Real-time systems
WebSockets, live tracking and notification pipelines that make software feel immediate.
Database engineering
PostgreSQL schema design, indexing strategy and query tuning under production load.
Deployment & operations
Linux VPS administration, Nginx, HTTPS, environment separation, backups and post-release support.
Self-hosted AI
OCR, computer vision and meeting intelligence — trained and served entirely on owned hardware.
03Engineering decisions
How I think about trade-offs.
The reasoning underneath the software — written for engineers who want to go deeper than the feature list.
The authoritative blocklist match lives in a Patricia trie of millions of entries, but most domains a user visits aren't on any list — so a full trie descent on every lookup is wasted work. A Bloom filter answers 'definitely not blocked' in constant time and lets the common case skip the trie entirely. False positives cost a confirming trie lookup, which is accepted because they're rare and the trie stays authoritative.
For enterprise and financial workflows, 'what did this record look like last quarter?' is a real question. Storing only the latest row and overwriting it can't answer it, and a bolt-on audit log can drift or be bypassed. Making the immutable event stream the source of truth gives complete audit history and point-in-time reconstruction inherently — at the cost of maintaining projections and thinking in events.
Multi-tenant isolation enforced only in application code is one forgotten `WHERE tenant_id = …` away from a cross-tenant data leak. Pushing isolation into the database with Row-Level Security removes that entire class of bug — the database refuses to return another tenant's rows regardless of what the query layer does.
On a construction site the network is unreliable or absent, so a hosted web app simply stops working. Treating the network as an optimisation rather than a requirement — each installation locally complete, syncing peer-to-peer on reconnection — keeps every user productive with zero connectivity and removes the always-on server as both a cost and a single point of failure. The price is real distributed-systems work: sync and conflict reconciliation.
Calling a hosted LLM or OCR API sends confidential data off-device, creates per-call cost and vendor lock-in, and makes 'why did it produce that?' unanswerable. Running local models behind provider interfaces keeps documents and audio on owned infrastructure, removes vendor cost, and — paired with deterministic logic or citation-bound RAG — keeps every result auditable. Local inference is slower and more operationally involved; that's the trade accepted.
An ATS exists to make a defensible decision. An LLM produces fluent output you can't audit and can quietly fabricate fields. A staged, rule-based matcher (exact → alias → normalised → fuzzy, never fuzzy-first) with a source-span envelope records exactly how every field and score was produced, so 'why did this candidate score 62?' has a precise answer. The cost is that it won't loosely infer meaning the way a model can.
Price as 'amount + currency' breaks the moment one currency spans markets with different pricing, or a market is served with no locked local price. Modelling market as a first-class concept — with explicit locked prices, an FX reference-currency fallback and a resolver that never borrows a price between markets — is the difference between a platform that expands globally and one that has to be re-architected the first time it tries.
A lab result, a freed bed or a booking status is only useful if the right person sees it immediately. Polling at that scale is both slower and heavier than pushing domain events over a persistent connection. WebSockets add connection state and a channels layer to operate, which is the accepted cost of genuine real-time behaviour.
Decision-making principles
Start with constraints
Understand the real constraints before choosing a solution.
Evaluate trade-offs
No solution is perfect. Trade-offs are inevitable — name them.
Prefer simplicity
Simple to operate, simple to understand, simple to evolve.
Security by default
Security is not a feature, it's a foundation.
Own it end to end
From schema to deployment — sole-owner delivery, no hand-offs.
04Career timeline
Where I've worked.
Two roles, one delivery record — the client platforms were shipped end to end during the Techynova years.
Holora Performance
Senior Backend Developer
Doha, Qatar · Feb 2026 – Present
Lead backend engineering across a concurrent portfolio of products spanning e-commerce, offline-first desktop ERP, a metadata-driven enterprise platform, in-house document intelligence and fitness technology — owning API architecture, data modelling, model development, security and deployment.
Key responsibilities
- Own backend architecture across multiple concurrent products — Django REST services, database schemas, authentication and authorisation, and integration contracts consumed by web, mobile and desktop clients.
- Lead in-house machine learning for OCR and document intelligence — all models trained internally on self-hosted infrastructure, with no third-party AI provider or external inference API in the pipeline.
- Design and optimise PostgreSQL data models for multi-module enterprise systems: schema design, indexing, migration management and query performance tuning under production load.
- Build mobile-facing API layers for Flutter and React Native clients with JWT authentication, token refresh, RBAC and versioned REST contracts.
- Implement asynchronous and background processing with Celery and Redis for scheduled jobs, notification dispatch and document-processing pipelines.
- Own deployment and production operations — Linux administration, Nginx, HTTPS/TLS, environment separation, database backups and post-release support.
Technologies used
- Python
- Django REST Framework
- PostgreSQL
- Redis
- Celery
- PyTorch
- Tauri
- Nginx
- Linux
05Skills
Organised around capability, not logos.
Systems & Architecture
The capabilities the work is really organised around.
- Clean Architecture & ports/adapters
- Metadata-driven system design
- Event sourcing
- Multi-tenancy & row-level security
- Offline-first / local-first systems
- Business rules engines
- Double-entry ledger design
- REST API design
Backend
- Python
- Django
- Django REST Framework
- Django Channels
- FastAPI
- Celery
- Flask
- WebSockets
- JWT & OAuth
- Redis task queues
Frontend
- React.js
- Next.js 14 (App Router, SSR/ISR)
- TypeScript
- JavaScript (ES6+)
- HTML5
- CSS3
- Redux
- Tailwind CSS
- Bootstrap
- Core Web Vitals
Mobile & Desktop
- Flutter (Riverpod, Dio, GoRouter, Hive)
- React Native
- Native Android (Kotlin 2.0)
- Jetpack Compose, Hilt, Room, WorkManager
- Android VpnService
- Rust / Tauri
- C# / .NET 10 (WPF)
AI / ML
- PyTorch
- FCOS object detection
- ONNX Runtime
- Computer vision
- OCR & Tesseract
- Custom model architecture & training
- Evaluation & benchmarking (IoU, mAP)
- RAG & hybrid retrieval
- Vector search (pgvector)
- Speech-to-text (Whisper)
- Self-hosted GPU inference
Data
- PostgreSQL
- MySQL
- Redis
- SQLite
- Schema design & indexing
- Query optimisation
- Migrations & backups
Cloud & DevOps
- Linux (Ubuntu) VPS administration
- Nginx
- Docker
- AWS (S3, SES)
- HTTPS/TLS
- Vercel & Render
- Git & GitHub
Systems & Networking
- DNS protocol & resolution
- DNS-over-HTTPS / DNS-over-TLS
- Android VpnService & TUN packet processing
- Local DNS server implementation
- Bloom filters & Patricia tries
- LFU caching
- Manifest V3 extensions
About
Systems first,
frameworks second.

I didn't start in software. I studied petrochemical technology at Anna University — and somewhere along the way realised the part of every project I actually loved was the code. So I taught myself to build, earned an IBM full-stack certification in Chennai, and never looked back.
Three years later, I've shipped live platforms for a UK fragrance brand, a Doha stationery store, a security firm and a construction company — most of them as the only engineer on the project, from the first database schema to the Nginx config on the server.
The projects I build for myself are the ones that keep me up at night: a DNS shield that protects a whole phone without root, an ERP that keeps working when the internet doesn't, meeting AI that runs entirely on my own hardware. If a system depends on someone else's cloud, my first question is always — does it have to?
Today I lead backend engineering at Holora Performance in Doha. The rule hasn't changed since my first commit: understand the constraint first, and the architecture follows.
The stack I'm known for
06Writing
Notes, when they're ready.
Writing is in progress.
Deep technical notes — on the ShieldDNS pipeline, offline sync, and keeping AI on owned infrastructure — will appear here as projects reach publishable milestones.
Get in touch
Let's build something useful.
Open to discussing interesting projects, collaborations and opportunities to solve real problems.
Send a message
Have a project in mind, or just want to say hi? It lands straight in my inbox.
Let's work together.
I enjoy working on challenging problems that create real impact — whether that's a full-time role, a freelance project or a technical consultation.
Direct communication
Requirements, scope and demos — handled directly in English.
Confidential
Your ideas and information stay safe with me.
End-to-end ownership
From database schema to deployment and post-launch support.
Currently Senior Backend Developer at Holora Performance · Transferable visa, NOC available