WhereHouse is a study project for Novo Nordisk that allocates pre-production ingredients across warehouses based on forecast and capacity data from Excel files.
The application lets a user:
- Select a country and year.
- Upload an
.xlsxinput file. - Send the file to the backend allocation engine.
- Download a generated Excel result file.
- Review a warehouse utilisation dashboard based on the latest processed run.
- Frontend: React, TypeScript, Vite
- Backend: Java, Spring Boot, Apache POI, OR-Tools
- Testing: Vitest, Playwright
- Containerisation: Docker Compose
.
├── backend/ Spring Boot API and allocation logic
├── frontend/ React application
├── e2e/ Playwright end-to-end tests
├── outputFile/ Generated Excel output files
└── compose.yaml Local multi-container setup
From the repository root:
docker compose up --buildServices:
- Frontend:
http://localhost:3000 - Backend:
http://localhost:8080
Generated Excel files are written to ./outputFile on the host machine.
To stop the services:
docker compose downcd frontend
npm install
npm testcd e2e
npm install
npm run e2eThis starts the Docker services, waits for the frontend to become available, runs the Playwright suite, and shuts everything down again.
The backend currently exposes two main endpoints under /api:
POST /api/exportAccepts an.xlsxfile together withwantedCountryandwantedYear, runs the allocation flow, and returns a generated Excel file.GET /api/dashboardReturns warehouse dashboard data for the latest successful allocation run.
- The main workflow depends on Excel input files in
.xlsxformat. - The dashboard is populated only after a successful export run.
- Sample generated output can be found in
outputFile/. - Additional Docker notes are available in
README.Docker.md.