Project Overview#
Project: Portfolio
Semester: DAT 3rd Semester 2026
Focus: Full-stack production system — Java backend and React frontend — for kitchen workflow, menu planning, and operational control in a real canteen environment.
MiseOS is built around one core idea: the kitchen should have the same digital discipline as physical mise en place.
The system supports the full journey from dish suggestion to published menu, including ingredient requests, allergen visibility, and multilingual communication for guests.
The system is currently being used and tested in a real kitchen environment.
Vision#
MiseOS is a kitchen operations platform that helps teams move from fragmented, manual planning to a structured, role-based workflow.
It supports:
- creative ownership for line cooks
- editorial and operational control for head/sous chef
- reliable publication of guest-facing menu information
Problem Statement#
In many kitchens, menu planning still depends on handwritten notes, Word files, and verbal coordination.
This creates recurring problems:
- dish ideas are scattered across stations
- ingredient needs are difficult to consolidate
- translation and allergen communication are error-prone
- management lacks one coherent overview
MiseOS solves this by centralizing planning, approvals, menu publishing, and ingredient workflows in one system.
Business Logic: The Creative Canteen#
The application models a kitchen where quality comes from station-level ownership and management curation.
1) Section-based planning (bottom-up)#
Instead of top-down menu creation, stations submit proposals independently.
- Stations: Hot, Cold/Starter, Salad, Bakery/Dessert
- Line cooks submit weekly dish suggestions per station
- Empty slots are allowed intentionally
- Suggestions can later be translated for guest-facing use
2) Head chef curation and verification#
The head/sous chef has full overview and editorial authority.
- Review and approve/reject/edit suggestions
- Assemble complete weekly menu
- Balance variety and operational feasibility
- Ensure Danish/English guest content quality
3) Ingredient and ordering flow#
Ingredient needs are linked directly to operational planning.
- Cooks submit ingredient requests
- Management reviews and approves
- Requests are aggregated into AI-normalized shopping lists
- Finalized list supports better ordering decisions
4) Takeaway (in progress)#
Takeaway handling for leftover portions after lunch service:
- Management creates daily offers from published menu dishes
- Guests can browse and order available portions
- Tracks offered, sold, and remaining portions per dish
Architecture#
Backend#
MiseOS is implemented as a layered Java backend separating HTTP handling, business logic, and persistence.
- Javalin controllers handling REST and WebSocket communication
- Service layer implementing domain logic and workflow rules
- DAO layer using JPA/Hibernate for database access
- PostgreSQL relational data model
- JWT authentication and role-based authorization
- External API integrations: Gemini AI, DeepL, Open-Meteo
Frontend#
The React frontend follows a feature-based folder structure. Each domain owns its pages, components, services, and utilities.
- React 19 + Vite, React Router v7
- CSS Modules with global design tokens
- Three React Contexts: auth, notifications, realtime
- WebSocket for live dashboard counters and staff notifications
- SSE for AI-streamed menu inspiration
Development Log (Portfolio Posts)#
The project development is documented in a series of posts covering both backend and frontend work, architectural decisions, challenges, and reflections.
Backend#
- Why I’m Building MiseOS
- Understanding the Kitchen: From Real World to User Stories
- From ERD to JPA: Design decisions and Hibernate implementation
- Integrating AI & Translation: External APIs and Service Layer Design
- Designing and Implementing the Service Layer
- Wiring the Application: Controllers, Routes, and Server Configuration
- Testing the API Layer and Real-Time Notifications with WebSockets
- From Fake IDs to Secure Passports: A Journey into JWT Middleware
- From Localhost to Live: Deploying MiseOS with CI/CD
- Writing the map, while building the city: A Week on MiseOS API Documentation
Frontend#
- Starting React Without Coding: Mapping Layouts, Roles, and Component Structure
- Pain First, Then Architecture: Building the Public Menu and Finding Structure
- Routing, JWT, and What Happens When a Session Expires
- The Same Data, Two Purposes: Building the Dish Suggestion Feature
- Building Fast: When the Structure Finally Pays Off
- The Screen That Actually Matters: Building the Weekly Menu Editor
- Final Thoughts: What I Learned, What I Would Do Differently, and What Comes Next
API Documentation#
All resource endpoints, request/response examples, and authentication details are documented in the API documentation.
Project Video#
Backend walkthrough#
A short walkthrough of the MiseOS portfolio and backend system.
The video covers the project overview, development log, API documentation, and a live backend demo in IntelliJ.
Frontend demo#
A walkthrough of the React frontend — from dish proposals and ingredient requests to weekly menu publishing and AI-powered features.