A full-stack application to help CodeYourFuture London plan and manage lunch orders efficiently.
The system replaces the current manual process (Slack messages, spreadsheets, and repeated discussions) with a centralized workflow tool that tracks lunch planning, assigns responsibilities, and notifies volunteers when action is required.
- Problem
- Solution
- MVP Features
- User Roles
- Dietary Requirements
- System Architecture
- Getting Started
- Project Structure
- Database Design
- Lunch Order Workflow
- Notifications
- Data Privacy
- Testing
- Deployment
Organising lunch at the CodeYourFuture London office involves many steps and people:
- Checking leftover food
- Estimating attendance across multiple courses
- Collecting dietary requirements
- Creating a food order
- Reviewing the order
- Placing the order manually on the supermarket website
- Receiving the delivery
- Gathering feedback
The current manual and fragmented process leads to:
- Duplicated work across volunteers
- Confusion about responsibilities and task ownership
- Lack of visibility on order status
- Repeated requests for dietary requirements
This application automates the lunch planning workflow by:
- β Tracking lunch orders
- β Assigning tasks to volunteers
- β Storing food options and dietary defaults
- β Notifying users when action is required
- β Providing a dashboard to view the current order status
Note: Supermarket ordering will still be manual, but the system will manage everything leading up to it.
- The backend uses Nodemailer to send emails (e.g., volunteer invites, order summaries).
- Configure your email credentials in
.env:EMAIL_USER=your_gmail_address EMAIL_PASS=your_gmail_app_password FRONTEND_URL=http://localhost:5173 - See
backend/src/services/mailService.jsfor implementation details.
- Create a new lunch order
- Apply default dietary requirements
- Build an order from predefined food categories
- Assign volunteers to different stages
- Review the order
- Mark the order as placed
- Track delivery
Users can see:
- Current lunch orders
- Order status
- Assigned volunteers
- Tasks that need action
Users receive notifications when:
- A task is assigned to them
- An order needs review
- An order is ready to be placed
Notifications may be sent via:
CYF staff responsible for managing the system.
Permissions:
- Add users
- Assign payment responsibility
- Complete orders
Volunteers help plan and manage lunch orders.
Permissions:
- Create lunch orders
- Build food lists
- Review orders
- Place orders manually
To reduce repetitive data collection, the system uses default dietary requirements.
Default options:
- Vegetarian
- Halal
These cover most common needs and can be adjusted when necessary.
- Frontend: React
- Backend: Node.js + Express
- Database: PostgreSQL (or another relational database)
cd backend
npm install
npm run devBackend runs on http://localhost:4000 by default.
cd frontend
npm install
npm run devFrontend runs on Vite's default local URL.
docker compose up --build- Frontend:
http://localhost:5173 - Backend:
http://localhost:4000
backend/
βββ src/
β βββ routes/
β βββ controllers/
β βββ services/
β βββ models/
β βββ middleware/
β βββ utils/
βββ package.json
frontend/
βββ src/
β βββ components/
β βββ pages/
β βββ services/
β βββ hooks/
β βββ styles/
βββ package.json
Examples:
Planning
β
Dietary Requirements
β
Create Order List
β
Review Order
β
Order Placed (manual supermarket order)
β
Delivery
Each stage can be assigned to a different volunteer, and notifications will be sent when the next action is required.
The system will notify users when:
- A lunch order is created
- A review is required
- An order is ready to be placed
- The delivery stage is approaching
Possible integrations:
Personal trainee information must be protected.
- Trainee data only visible to lunch organisers
- Venue information visible to CYF community
- No sensitive data exposed publicly
- Authentication and role-based permissions will be implemented
The project will include:
- Backend API tests
- Frontend component tests
- Integration tests for the order workflow
The application should be easy for CYF volunteers to maintain and deploy.
platform:*
- Coolify
This project is maintained by CodeYourFuture London.
Contributions are welcome! Please feel free to submit a Pull Request.
Use the following demo account to explore the application:
Email: admin@codeyourfuture.io
Password: Admin1234!
CYF Lunch Organizer Presentation Slides
A full walkthrough of the application from both Admin and Volunteer perspectives:
Built with β€οΈ for the CodeYourFuture community