Workmess-monitor-meal-management-nextjs

Mess Monitor — Meal Management System

I built a meal and expense manager for shared-accommodation messes.

Role
Full Stack Developer
Timeline
Sep 2025
Main stack
Next.js & Firebase
Mess Monitor — Meal Management System — Next.js & Firebase project screenshot

Overview

I built a meal and expense manager for shared-accommodation messes. Members join a mess with a password, a manager approves requests, and everyone logs daily meals, bazar expenses and deposits.

At the end of a session the system produces a monthly report with each member's balance. It runs on Next.js with Firebase.

Problem

In a shared mess, someone keeps the meal count and the bazar money in a notebook or a spreadsheet. Arguments start at month end: who ate how many meals, who paid what, and who owes whom.

Approach

I built one shared record that everyone can see. Each member logs meals and deposits, the manager approves what needs checking, and expenses are recorded as they happen. The monthly report works out every member's balance automatically, and an activity log shows who changed what.

Outcome

Data collections
8
Roles
2
Mess per person
1
Lines of component code
~5k

What I built

  • Email and password sign-in with admin and user roles
  • Create a mess with a password, or request to join one
  • One person can belong to only one mess at a time
  • Manager approval for join requests, leave requests and member-submitted meals
  • Daily meal tracking (breakfast, lunch, dinner) with a calendar view
  • Expense tracking with add, edit and delete
  • Deposit tracking per member
  • Sessions with custom date ranges and a history you can switch between
  • Monthly report with a meal table and a balance for every member
  • Activity log for managers as an audit trail
  • Admin panel to manage users and assign members to messes
  • Live updates across members and a mobile-first layout

Architecture

System architecture

Diagram: a Next.js app with Firebase Auth and Realtime Database.
The app talks straight to Firebase. There is no server of its own. Open full size ↗

Joining a mess

Diagram: request, pending, approve and member.
A request needs the mess password and the manager approval. Open full size ↗

Month cycle

Diagram: meals, expenses, deposits and report.
Daily entries add up to a monthly report with balances. Open full size ↗

Data model

Diagram: eight Realtime Database collections.
Eight collections around the mess. Open full size ↗

Engineering decisions

  1. 01One mess per person

    A user cannot join a second mess while in one. The report always has one answer for what a member owes.

  2. 02Approval where mistakes cost money

    Member-submitted meals wait for the manager. The person who handles the money confirms the numbers.

  3. 03Sessions instead of fixed months

    A mess may settle on any dates. A session has a start and end, and old sessions stay available to look back on.

  4. 04An activity log for managers

    Every change is recorded and visible to the manager, so a disagreement can be settled from the record.

  5. 05Realtime Database for live numbers

    Meals and deposits show up for all members as they are entered, with no refresh or server to run.

Need something similar?

Tell me what you are building and I will reply within one working day.

Start a project
↑↓ navigate↵ openesc closeCtrl K toggles this menu