UNMESSIFY is a React-based web app for hostel/mess meal budget management.
It helps students stay within monthly food credits by tracking meal spending, planning ahead, and offering budget-aware meal suggestions from live menu data.
-
Budget Dashboard
- Monthly credit tracking
- Safe-limit indicators
- Burn-rate projection
-
Smart Suggestions
- Budget-aware meal combo recommendations
- Helps optimize spending while preserving meal variety
-
Menu Planner
- Calendar-based meal planning for upcoming days
-
Guest Mode
- Quick budget calculator without full account setup
-
Data Persistence
- Local-first storage with IndexedDB
- Optional cloud sync integration
- Frontend: React 19, React Router, React Bootstrap, Bootstrap
- Charts & Analytics: Recharts
- Persistence: IndexedDB (
idb) + localStorage fallback - Backend/Cloud Integration: Firebase
- Tooling: Create React App (
react-scripts)
src/
App.jsx Main app layout and routing shell
components/ Reusable UI components
context/ State providers (auth, user, menu, transactions, theme)
pages/ Route-level views (Dashboard, Planner, Suggestions, etc.)
services/ API, cloud sync, storage services
styles/ App and page-level styles
utils/ Budget/recommendation utility logic
Other notable directories/files:
public/ Static assets and base HTML template
docs/ Project documentation assets
firebase.json Firebase Hosting config (with SPA rewrites)
.firebaserc Firebase project aliases/config
- Node.js: 18+ recommended
- npm: 9+ recommended
npm installnpm startApp runs in development mode on the default CRA dev server.
npm run buildFrom package.json:
npm start– Start development servernpm run build– Create production buildnpm test– Run testsnpm run eject– Eject CRA configurationnpm run hosting:deploy– Build and deploy to Firebase Hostingnpm run hosting:preview– Build and deploy to Firebase preview channel
This project is configured for single-page app (SPA) hosting via Firebase.
npx firebase-tools loginnpm run hosting:deploynpm run hosting:previewIn Firebase Console:
- Go to Authentication → Settings → Authorized domains
- Add:
<project-id>.web.app<project-id>.firebaseapp.com
- Add your custom domain (if used)
- Build artifacts are intentionally excluded from source control.
- Menu data is fetched dynamically through the configured API service in
src/services. - Firebase configuration and environment-specific setup should be validated before production deployment.