Background
The office coffee machine is located in the main lunch area which is separate from the work area. Throughout the day, different members of the team go to the lunch area to prepare coffee. On occasion, a team member will start brewing their cup of joe, then go back to the working area. In the event the team member forgets to pick up their coffee, their coffee not only holds off the coffee maker, but they also end up with a sad cup of ☕.
We want a Full Stack Web Application to simulate this coffee machine and notify the team member when their coffee is done.
Main functionalities
These are the main features we want to see in your implementation. However, feel free to implement any additional features you believe will improve the overall functionality of the application.
- Brewing process
- This feature represents the time it takes to brew the coffee
- Brewing should vary in time between 50 seconds to 1 minute
- Registration
- New team mates should be able to register using their name and email address
- A user should only have to register once
- They can select their name from the history when brewing
- Pinging
- A user can use this button to manually notify another team mate
- There should be a list showing the recent brews and allow them to be pinged
- Status for each brew (add more if needed)
- Picked: Once someone picks their cup, they can mark it as picked.
- Brewed: The brew is complete but not picked
- Brewing: This is the status whenever the coffee is still being brewed
Technical Requirements
- Frontend: Next.js is preferred (React if not).
- Backend: Any tech stack is fine (Node.js/Express preferred).
- Data Storage: Local, in-memory, file, or DB — explain your choice.
- Email: Optional — can log to console instead.
- No authentication needed.
- No tests required (but a bonus if added).
Extra Credit Ideas
- Live brew status updates via WebSockets or Server-Sent Events.
- “Queue” system if the coffee machine is busy.
- Mobile-friendly responsive UI.