
Hungriees
Campus food pre-ordering that takes real money, from real students, every day.
Students pre-order from campus outlets and skip the queue; shopkeepers get a live order board, analytics and payouts. React Native (Expo) client, FastAPI backend, Neon Postgres, Clerk auth, Cloudinary media, Razorpay payments. Multi-role — customer, shopkeeper, admin — with the entire money path computed server-side.
- React Native
- Expo
- FastAPI
- Neon Postgres
- Clerk
- Razorpay
- Cloudinary
Payment webhooks are HMAC-verified
Razorpay callbacks are rejected unless the signature validates against the raw request body. Order totals are recomputed on the server at capture time, so the client never gets a say in what it owes.
IDOR protection across every resource
Ownership is enforced at the query layer, not the route. A customer cannot fetch, mutate or refund another customer order by changing an ID, and a shopkeeper is scoped to their own outlet.
Timing-attack fixes on secret comparison
Token and signature checks were rewritten to constant-time comparison after the naive equality checks turned out to leak length and prefix information under timing measurement.
Forward-only order state machine
Orders move through a fixed sequence and cannot be replayed, reversed or skipped. A retried webhook or a double-tapped button lands on the same final state instead of double-charging.




