ShampooMe is a web-shop for personalized shampoos.
This project is a prototype focused on the business process of ordering a personalized shampoo. It uses the process management tool Camunda as its backbone.
This project requires Docker to be installed.
Simply start the project by executing the following command in the project directory:
docker-compose up
The main website should then be up and running at localhost:4200
.
It may take a few seconds for everything to start.
The following sites can be reached:
localhost:4200
UI of the Applicationlocalhost:8080
API of the Applicationlocalhost:8081
Process Management Tool aka Camunda (user:demo
, password:demo
)localhost:8082
Database Administration Tool (user:user
, password:password
, database:mydatabase
)
The process is an integral part of the project. Since this is just a prototype, the whole process is simply simulated, and no real shampoo is produced.
Here is a short overview:
- Recommend a shampoo (based on preferences the user has)
- Produce shampoo (this is simulated with a delay)
- Check Quality (this is done manually via a Camunda Form)
- Deliver shampoo (also simulated with a delay and there is a random chance of a delivery error)
- Get feedback from the user (optional)
The detailed version can be found in the folder processes
.
For easier development there is the process shampoome-process-test.bpmn
, with shorter delays.
If you want to change the current process, replace the .bpmn
in backend/camunda/src/main/resources
with the desired process.
The project is a classic web application, with frontend & backend. It consists of multiple components, and is designed to be distributed i.e. each component can be on a different machine.
All backend components (excluding the database) are Java SpringBoot applications using Maven.
Main UI of the application. Users
can (1) get a shampoo recommendation, (2) order a shampoo, (3) check the order status, and (4) send feedback.
Provides an HTTP API and is the access point aka gateway to the backend. It handles all requests from the frontend, validates these requests, and routes them to the database and/or camunda.
Listens on camunda tasks and accordingly (1) determines shampoo ingredients, or (2) saves an order to the database.
Listens on camunda tasks and accordingly (1) update the order status, or (2) simulate that a package is lost 10% of cases.
Listens on camunda tasks and accordingly (1) update the order status, or (2) save feedback & KPIs to the database.
Provides a UI for admins
to see all current process instances, and for managing the quality check.
It also simulates delays for production & delivery tasks.
Persists orders and feedback. mariadb/init.sql
contains a script to initialize the database.
This project was created by students as part of a lecture at the Vienna University of Technology.
Nihad Abou-Zid, Sebastian Fürndraht, Tobias Henöckl, Parinaz Momeni Rouchi, Lukas Wieser · 06.06.2023