This project serves as a foundation for developing commonly used and scalable products in real-world scenarios. It consists of a front-end service and three back-end services.
-
User service: Enables user creation, login, and retrieval of account information, utilizing the
CrudRepository
interface available in Spring Boot. -
- Retrieves a list of expenses based on the provided query conditions, page number, and page size. using the Specification class from the
Spring Data JPA
.Swagger-API - Expense application submission by users, with the ability to send MQ messages to the
approver-queue
. - Approval or rejection of expense applications by the approver, with corresponding MQ messages sent to the
applier-queue
upon update.
- Retrieves a list of expenses based on the provided query conditions, page number, and page size. using the Specification class from the
-
- Catching MQ messages and triggering the sending of email notifications upon receiving messages from the
approver-queue
. - Utilizing a CamelRouter to process emails when receiving messages from the
applier-queue
.
- Catching MQ messages and triggering the sending of email notifications upon receiving messages from the
-
Load Balancer: nginx.conf
- Amazon EC2 (ubuntu)
- Amazon RDS (Postgres)
- Amazon MQ (ActiveMQ)
Jenkinsfile
[docker-compose.yml]
# push images to dockerhub
./dockerhub-helper.sh -o push
bash dockerhub-helper.sh -o push
# pull images from dockerhub
./dockerhub-helper.sh -o pull
bash dockerhub-helper.sh -o pull
# clone all repositories and build images by docker-compose
./startup.sh