A progressive web application for managing daily meal planning, tracking, and communication for a 16-member boarding mess.
- Real-time meal registration and tracking
- Morning and night meal periods with cutoff times
- Reliable time synchronization with server to prevent manipulation
- Live chat with @mentions and notifications
- Monthly meal consumption reports
- PWA support with offline functionality
- Responsive mobile-first design
- Dark mode and eggplant theme
- Frontend: React 18 + Vite + TypeScript
- Styling: Tailwind CSS
- State Management: Zustand
- Backend: Supabase (PostgreSQL, Auth, Realtime)
- PWA: Workbox + vite-plugin-pwa
- Routing: React Router
- Node.js 18+ and npm
- Supabase account and project
- Clone the repository
- Install dependencies:
npm install- Copy
.env.exampleto.envand fill in your Supabase credentials:
cp .env.example .env- Start the development server:
npm run devThe app will be available at http://localhost:3000
npm run dev- Start development servernpm run build- Build for productionnpm run preview- Preview production buildnpm run lint- Run ESLint
src/
├── components/ # React components
│ ├── layout/ # Layout components (Header, Nav, etc.)
│ ├── home/ # Home tab components
│ ├── chat/ # Chat tab components
│ └── preferences/ # Preferences tab components
├── hooks/ # Custom React hooks
├── stores/ # Zustand state stores
├── services/ # External services (Supabase, notifications, time sync)
├── utils/ # Utility functions
└── types/ # TypeScript type definitions
- Time Synchronization Implementation - Detailed time sync architecture
- Time Sync Deployment Guide - Step-by-step deployment instructions
- PWA Implementation - Progressive Web App setup
- Push Notifications - Push notification configuration
VITE_SUPABASE_URL- Your Supabase project URLVITE_SUPABASE_ANON_KEY- Your Supabase anonymous keyVITE_VAPID_PUBLIC_KEY- VAPID public key for push notifications
Private project for mess management.