This project is for personal training. Inspired by the parking lot project shared in thoughtworks.
use ./mvnw spring-boot:run
to run this project.
- Java
- Springboot
- Webflux
- Vavr
- Minikube
- ArgoCD
- Docker
- Pair
- TDD
- Refactoring
- Simple Design
- Design pattern
Parking lots enabling parking and picking up cars.
A ParkingBoy
- Can manage multiple parking lots.
- Park the car to the first parking lot with available position(s).
A SmartParkingBoy
- Can manage multiple parking lots.
- Park the car to the parking lot with most available position(s).
A SuperParkingBoy
- Can manage multiple parking lots.
- Park the car to the parking lot with the highest unoccupied rate.
A ParkingManager
- Can manage multiple parking lots.
- Can manage multiple parking boys.
- Can ask their subordinates to park the car or park the car themselves.
A ParkingDirector
- Can manage multiple parking lots.
- Can manage multiple parking boys and managers.
- Can print out the managed valets and their assigned parking lots, and the parking lots directly managed.
- The information of parking lots should contain their name, capacity, number of available positions and utilization rate.
- Can Create Any type of valets
- Scanned handwriting, where information is presented in a flattened way
- Digital input, where customer's concept has been created but others not
- Smart input, where information is consistent with our system
- Different valets have different strategies of parking. We want a basicValet who can handle all kinds of parking.
- Functionalities:
- parking boy
- smart parking boy
- super parking boy
- parking manager
- parking director
- Deployment:
- Docker image
- Deploy to argoCD
At first, run json-server --watch parking-lot.json --port 3001
to launch the json server, then run the app.
Try http://localhost:8080/parking-lot/1
to see if you can get the data.