2026
Home Services App
Emergency home services platform for Indian housing societies — three clients (Android, admin dashboard, API) sharing one REST API with role-based middleware, real-time tracking, and Razorpay payments.
The Problem
In Indian residential societies, urgent household breakdowns — electrical faults, water leaks, appliance failures — need fast, trustworthy help. Existing platforms like Urban Company serve this at city-wide scale; I wanted to explore a society-focused model instead, where concentrated local demand could reduce delivery cost and build trust through repeat local partnerships.
What I Built
I built three clients talking to one REST API.
My backend runs an MVC pattern with role-based middleware (customer/partner/admin), Sequelize ORM over PostgreSQL in production, JWT auth, and location-based provider search using the Haversine formula. Real-time technician tracking and customer-partner chat run through Socket.io rooms scoped to each booking. The Android app follows clean architecture with Hilt DI and Retrofit; the admin dashboard is a typed Next.js client calling the same API.
By the numbers: 12 Sequelize models, 9 route groups, 15 backend test files, 15 seeded services across 8 categories, 23 commits over 18 days.
Android App (Kotlin/Compose) ──┐
Admin Panel (Next.js) ──┼──▶ Express API ──▶ PostgreSQL
│ │
│ ├──▶ Socket.io (live tracking + chat)
│ └──▶ Razorpay (payments)Key Decisions & Tradeoffs
- I used SQLite + a mock DB fallback for local dev — no Postgres setup needed to run the project, but the mock doesn't enforce schema constraints, so model-level bugs can slip through to production undetected.
- I mocked Razorpay for testing — tests run without network access, but the mock returns hardcoded data, so real payment integration bugs only surface after deployment.
- I put tracking and chat on one Socket.io server — simple to implement, at the cost of coupling two features that probably deserve separation as the app grows.
Highlights
- Three clients (Android/Compose, Next.js admin, Express API) sharing one REST API with role-based middleware
- Real-time technician tracking and customer-partner chat via Socket.io rooms scoped per booking
- Location-based provider search using Haversine formula across 8 service categories
- 12 Sequelize models, 9 route groups, 15 backend test files — 23 commits over 18 days
- Included a gap-analysis doc, mock Razorpay service for offline testing, and SQLite fallback for local dev