The main goal of this project is to create a reservation system that allows customers to reserve a service and providers to manage their services.
Using DDD to design the domain model and event sourcing to handle the business logic. Experiencing with Clean Architecture which separating by domain folder structure.
For design reference, I utilized event storming to transform wireframes into logical diagrams, facilitating top-level design creation.
Example: Provider functionalities
-
Creating wireframes and user flows with input from designers.
-
Employing event storming to visually represent the diagram, making requirements clear for system design.
Utilizing the diagrams to design the database schema, thereby integrating all diagrams to provide an overview of domain separation.
Provider can:
- Create a new service
- Update a service
- Delete a service
- View all services
- View all orders
- View all orders for a specific service
Customer can:
- View all services
- Request order a service
- View all orders
- Get notified when the order with icalendar.
- Monorepo: Nx
- Frontend: React, Unocss, Vite, Jest
- Backend: Express, TypeORM, MySQL, Docker, Jest
-
setup environment note: Fill in the .env file with your own credentials
yarn cp services/backend/.env.example services/backend/.env
-
run backend service note: Don't forget to setup your docker environment
nx dev backend
-
run frontend service
nx dev frontend
-
on your nginx to proxy the port 81 for backend and frontend service
brew services start nginx nginx -c nginx.conf