RSVP & cutoff engine
Students opt in or out of each meal before a strict cutoff, with live countdowns and push reminders when the window is closing.
PUT /api/student/today
Open source · MIT — Cloud in private beta
MessMate turns meal RSVPs, cook quantities and wastage ledgers into software. Self-host it in your campus basement, or join the private beta of MessMate Cloud — hosted, multi-tenant and built API-first.
$ git clone https://github.com/abu-devel0per/messmate.git
01 — The problem
Conventional mess halls prepare a fixed quantity regardless of who actually shows up. When the hostel empties for the weekend, the rice doesn't know.
Food waste, financial loss and disposal cost when quantity is a guess.
Late arrivals find empty serving trays — the inverse failure of the same guess.
Manual attendance drifts, billing disputes grow, and shared accounts eat for free.
02 — The platform
MessMate is an operations platform, not an attendance app. Four engines work the same shift, on the same data.
Students opt in or out of each meal before a strict cutoff, with live countdowns and push reminders when the window is closing.
PUT /api/student/today
RSVP headcount becomes raw ingredient weights — rice, dal, flour, curries — plus a configurable buffer margin for the kitchen.
GET /api/admin/cooking-quantities
Cooked vs. consumed vs. disposed, weighed in kilograms, with percentage and monetary loss computed automatically per meal.
POST /api/admin/wastage
Server-enforced session rotation: a new login revokes the old token at the JWT level. Account sharing dies quietly.
sid claim · session_invalidated
WebSocket headcount ticks during service, roster verification queues onboard students, and campus-wide broadcasts land via FCM.
WebSocket manager · FCM dispatcher
03 — Scrollytelling
One day on MessMate
06:15
The cutoff
RSVPs freeze for breakfast. The headcount locks and the buffer is applied.
The menu for the day is published to every student's home screen — with dietary indicators for veg, non-veg and special diets.
Opt-ins freeze. The RSVP count becomes a locked headcount, and the cooking quantity estimator converts it into kilograms with a safety buffer.
Students heading off campus toggle out before the window closes. The manager's dashboard shows expected diners vs. absentees in real time.
Attendance is verified at the counter and a live WebSocket headcount ticks on the manager's screen — no clipboards, no shared logins.
Prepared weight and leftover weight are logged in kilograms. The wastage ledger auto-computes waste percentage and monetary loss for the meal.
Monthly mess-fee accruals update through the billing service, and a broadcast for tomorrow's special lands in every notification shade via FCM.
04 — For developers
The React Native apps are just the reference client. Everything below them is a documented, async API you can build your own front-end against.
$ docker compose up
✔ backend FastAPI 0.100+ :8000
✔ mongo MongoDB · Motor async :27017
$ curl -s localhost:8000/api/student/today \
-H "Authorization: Bearer $JWT"
{
"meals": [
{ "name": "lunch", "opted_in": true, "cutoff": "09:45" },
{ "name": "dinner", "opted_in": false, "cutoff": "18:45" }
],
"headcount_live": 232,
"session": { "device_bound": true }
}
A resilient DB router (db_router.py) isolates every campus's data while one deployment serves them all.
FastAPI + Motor + WebSockets keep headcounts live under load. Interactive Swagger at /docs.
Pytest backend suites, E2E user-journey scripts, TypeScript front-end. CI-friendly from day one.
05 — Two ways to run it
MessMate is early-stage: the core is MIT-licensed and stable enough to pilot. The hosted cloud is in a private beta with a short waitlist.
₹0 / forever, MIT
docker compose up -d
Free during beta
no card · no lock-in · export anytime
Early-stage means honest pricing: the beta is free, and self-hosting stays free forever. We'd rather earn the upgrade than trap it.
06 — The ledger
JWT auth with server-enforced single-device sessions, multi-tenant DB router, student & admin apps.
Per-meal RSVPs, cutoff windows, cyclical menus and the predictive cooking-quantity estimator.
Wastage ledger with cost loss, Razorpay billing, FCM broadcasts and the live WebSocket headcount.
Private-beta hosted platform. Onboarding the first campuses from the waitlist, slowly and carefully.
iOS via TestFlight, offline-first kiosk mode, and a public analytics API for campus dashboards.
07 — Questions
Yes — the whole stack. The FastAPI backend, the React Native / Expo clients, and the deploy scripts are MIT-licensed. Read it, fork it, run it, ship it.
No. Self-hosting is the primary path: a MongoDB instance and docker-compose up gets you a working deployment. The cloud exists for teams who'd rather not carry the pager.
One deployment can serve many campuses. A resilient database router isolates each tenant's data, so a college, its hostels and its PGs share infrastructure without sharing data.
Razorpay subscriptions and invoicing are built in for mess fees. Don't like Razorpay? The billing service is one module — fork it and swap the provider.
Good first issues are labeled in the repo. Backend is Python (pytest), front-end is TypeScript. Star it, open a PR, or just tell us what your mess does that ours doesn't.
Applications open · limited pilot slots
MessMate Cloud · private beta · self-hosted core under MIT, always.