A room near campus. Honest rent. Reviews from people who actually lived here.
One listing. Real students. One inbox. No middleman taking a cut of the rent.
Act I · The City Is Cruel
A small-town student lands in a big city.
Then the broker arrives.
| Where students search today | What it actually delivers |
|---|---|
| Campus WhatsApp groups | The same room is offered at three different rents to three different students within the same week. No accountability after the deposit. |
| Paper notices on hostel walls | Out of date by the time the student copies down the number. Owner has already rented the room twice. |
| Local property brokers | One month rent as commission. Vague visits. Listings disappear when asked for cleanliness, gender preference or rules. |
| National rental portals | Built for metros. Tier-2 and tier-3 cities are blank. The student near a Solan or Mandi campus is invisible to the platform. |
Act II · The Single Idea
A review is noise.
A review from someone who lived in the room is signal.
GharSetu's verified-renter badge is not an honour system. It is a database fact. Every review tells the next student which kind it is.
Did this student rent the room?
- Owner marked them as a current renter from the dashboard, verified
- Or they paid rent in-platform via the simulated Razorpay webhook with HMAC-SHA256 verification, verified
- Otherwise the review is stamped outsider so future students can weigh the signal
The badge is the only non-obvious thing on the page. Everything else is a consequence of taking it seriously.
Act III · The Surface
Every screen is a route.
Every route is server-rendered HTML.
No SPA. No client framework on the critical path. A Fastify 5 server on Node 22 LTS sends a 200 KB page that paints on a 2G phone in under three seconds.
| Method | Path | Purpose |
|---|---|---|
| GET | /search | Filterable list and Leaflet map view, OpenStreetMap tiles, distance from landmark sort. |
| GET | /listings/:id | Full detail page with up to six WebP photos, map, rules, and reviews tagged verified or outsider. |
| POST | /listings | Owner publishes. Sharp resizes uploads to WebP at 1600x1200. |
| POST | /bookings | Student requests a visit or a reservation. Owner accepts or declines from the dashboard. |
| POST | /pay/webhook | Razorpay simulated, HMAC-SHA256 with timing-safe equality. Captures payment and creates the renter record. |
| POST | /ondc/v1/{search,select,init,confirm,…} | Nine Beckn protocol actions plus a registry-style /lookup. Async on-callbacks with full quotes and order state. |
| GET | /admin | Super-admin SIEM dashboard. Audit log on every mutation, queryable in real time over Server-Sent Events. |
Act IV · The Stack
One container.
One process. Zero managed services.
No Redis. No queue. No managed database for the MLP. Cloud Run scales to zero, so an idle deployment costs literally zero rupees. The schema in src/db/schema.sql is portable Postgres-compatible SQL when it needs to grow.
- Node 22 LTS
- TypeScript 5.7
- Fastify 5
- EJS server-rendered
- SQLite ephemeral
- zod validation
- pino JSON logs
- JWT cookie + CSRF
- Sharp · WebP 1600x1200
- Leaflet · OpenStreetMap
- Beckn protocol
- DigiLocker simulated · OAuth + PKCE
- Razorpay simulated · HMAC-SHA256
- Cloud Run · asia-east1 · 512 MiB
- PWA + service worker
- EN + HI bilingual
Act V · Proof
Live. Auditable. Self-seeding.
Production deployment
Custom domain plus the raw Cloud Run service URL. min-instances=0, so the first request after a quiet window pays one cold start of around five seconds. After that, sub-200ms.
https://gharsetu.dmj.one https://gharsetu-azjqpkmlpa-de.a.run.appInline pitch and capstone report
A keyboard-navigable 16:9 slide deck and the full capstone report live as routes on the same domain. Originals downloadable as .pptx and .docx.
/pitch · /report · /pitch.pptx · /report.docxAuto-seeded demo
First boot creates a fresh SQLite DB at /tmp/gharsetu.db with six users, ten listings across Solan, Mandi, Shimla, Chandigarh, Delhi and Noida, sample bookings, payments, renter records and feedback. Reseeds when the instance scales to zero and back.
Super-admin SIEM
Every mutation writes an audit row with actor, action, IP, user agent and a sanitised payload. /admin streams the audit feed live over SSE for super-admin investigation.
If a hill-state student can find an honest room, so can yours.
I mentor capstones into production-quality MLPs that ship on Cloud Run, comply with ONDC, and meet WCAG 2.2 AAA from line one. If your team is shipping for India outside the metros, this is the bar.