All projects

CampusBites

Frontend & Database Developer · 2026

Completed — Team Project

A smart canteen ordering system for college campuses — student ordering, a real-time kitchen display, and an admin dashboard, all kept in sync live.

CampusBites
Next.jsReactTypeScriptTailwind CSSNode.jsExpressMongoDBSocket.IORazorpay

Problem

Campus canteens run on paper tokens and guesswork — students queue blind, kitchens get slammed in bursts, and admins have no visibility into what's actually selling.

Solution

One live system replaces all three: students order and track from their phone, the kitchen sees tickets appear the instant they're placed, and admins control the entire menu and canteen status from a dashboard — no page refresh, anywhere.

Key Features

  • Built the student ordering portal and structured the MongoDB data layer
  • Real-time kitchen display (KDS) with live order tokens via Socket.IO — no page refreshes
  • Razorpay/UPI checkout and admin controls for menu and canteen status

Architecture

  • Next.js frontend talks to an Express REST API for every write — orders are persisted first, before anything else happens
  • Socket.IO sits on top as a pure broadcast layer (new order / status update / canteen status) to the kitchen and student views
  • Because writes go through REST first, a client that misses a socket event still sees the correct state on its next fetch — the real-time layer can never leave data inconsistent

My Contribution

Built the student ordering portal (the Next.js frontend students place and track orders from) and structured the MongoDB data layer the rest of the system reads and writes against, as part of a small team.

Challenges

  • The team was upfront in the project docs about what's demo-grade vs. production-ready: passwords are stored in plain text (bcrypt would be the fix), backend routes have no auth middleware yet, and payments run in mock mode without real Razorpay keys.

What I Learned

  • Structuring a MongoDB schema for a live order-status system so a WebSocket broadcast layer can sit on top of REST writes without ever becoming the source of truth itself.
View Code