Skip to content

Commit a1712a0

Browse files
committed
feat(ci/cd): enhance CI/CD testing and deployment pipelines
1 parent 34e2d71 commit a1712a0

File tree

1 file changed

+41
-53
lines changed

1 file changed

+41
-53
lines changed

README.md

Lines changed: 41 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# **Budget Management Backend API**
1+
# **Budget Management API - A Comprehensive, Microservices-Based API for Managing Budgets, Expenses, Users, and More! 💰**
22

33
**Welcome to the Budget Management API**, a robust, **microservices** backend platform for managing budgets, expenses, users, orders, and notifications. Built with **Node.js**, **Express**, and **TypeScript**, it supports advanced features like **GraphQL**, **gRPC**, **WebSockets**, and **REST APIs**. The API integrates with **PostgreSQL**, **MongoDB**, **MySQL**, **Redis**, **RabbitMQ**, **Kafka**, and **Elasticsearch**, and is containerized with **Docker** and orchestrated using **Kubernetes**. It also includes a developer-friendly **CLI** tool and interactive **Swagger/OpenAPI** documentation for exploring and testing endpoints.
44

@@ -8,14 +8,16 @@
88
</a>
99
</p>
1010

11-
Below is a _very_ comprehensive guide to setting up, running, and utilizing this API.
11+
Below is a _very_ _comprehensive_ guide to setting up, running, and utilizing this API. 💸🚀
1212

1313
## **Table of Contents**
1414

1515
1. [Overview](#overview)
1616
2. [Live Deployment](#live-deployment)
1717
3. [Technologies Used](#technologies-used)
1818
- [Microservices Architecture](#microservices-architecture)
19+
- [Microservices Diagram](#microservices-diagram)
20+
- [Full Architecture Diagram](#full-architecture-diagram)
1921
4. [Project Structure](#project-structure)
2022
5. [Setup Instructions](#setup-instructions)
2123
6. [Available Endpoints](#available-endpoints)
@@ -33,6 +35,7 @@ Below is a _very_ comprehensive guide to setting up, running, and utilizing this
3335
18. [Spring Boot Backends with Gradle & Maven](#spring-boot-backends-with-maven-and-gradle)
3436
19. [Dotnet Backends with C#](#dotnet-backend-with-c-sharp)
3537
20. [Continuous Integration and Deployment with Jenkins](#continuous-integration-and-deployment-with-jenkins)
38+
- [GitHub Actions](#github-actions)
3639
21. [Testing](#testing)
3740
22. [Contributing](#contributing)
3841
23. [Author](#author)
@@ -169,64 +172,42 @@ You can access the API and test the endpoints directly from the browser. Feel fr
169172

170173
The Budget Management API is designed with a microservices architecture, allowing for modular development and deployment. Each service can be developed, deployed, and scaled independently, providing flexibility and resilience.
171174

172-
1. **Authentication Service**: Handles user registration, login, and JWT token management.
175+
1. **Authentication/User Service**: Handles user registration, login, and JWT token management (+ profile management as well).
173176
2. **Budget Service**: Manages budgets, including creation, updates, and retrieval.
174177
3. **Expense Service**: Manages expenses associated with budgets, including CRUD operations.
175178
4. **Customer Service**: Manages customer data, including creation and updates.
176179
5. **Search Service**: Provides advanced search capabilities using Elasticsearch.
180+
6. **Order Service**: Manages orders, including creation and updates.
181+
7. **Transaction Service**: Logs transactions for budgets and expenses.
182+
8. **Notification Service**: Sends real-time notifications to users via WebSockets.
183+
9. **Task Management Service**: Handles asynchronous tasks using RabbitMQ and Kafka.
177184

178185
This architecture allows for easy integration of additional services, such as order management, task management, and notification services, without affecting the core functionality of the API.
179186

180-
```plaintext
181-
+-----------------------------+
182-
| Frontend Clients |
183-
| • Web UI |
184-
| • CLI Tool / gRPC Client |
185-
+--------------+--------------+
186-
|
187-
| HTTP/GraphQL/WebSocket/gRPC
188-
|
189-
+--------------v--------------+
190-
| API Gateway / |
191-
| Express.js Layer |
192-
+--------------+--------------+
193-
|
194-
+----------+--------------+--------------+-----------+
195-
| | | | |
196-
| | | | |
197-
+--------v----+ +---v-------+ +---v-------+ +---v-------+ +--v---------+
198-
| Auth | | Budget | | Expense | | Order | | Customer |
199-
| Service | | Service | | Service | | Service | | Service |
200-
+-------------+ +-----------+ +-----------+ +-----------+ +------------+
201-
| | | | |
202-
+--------------+--------------+--------------+-----------+
203-
|
204-
+--------------v--------------+
205-
| Search Service (Elastic) |
206-
+--------------+--------------+
207-
|
208-
+----------------v----------------+
209-
| Messaging & Event Streaming |
210-
| • RabbitMQ (Task Queues) |
211-
| • Kafka (Event Bus) |
212-
+----------------+----------------+
213-
|
214-
+-----------+-----------+-----------+------------+
215-
| | | | |
216-
+------v---+ +-----v-----+ +----v-----+ +---v-----+ +---v------+
217-
| MongoDB | | PostgreSQL| | MySQL | | Redis | | Elastic |
218-
| (NoSQL) | | (Logs | | (Alt RDB)| | (Cache) | | (Search) |
219-
+----------+ +-----------+ +----------+ +---------+ +----------+
220-
221-
+-----------------------------------------------+
222-
| Containerization & Orchestration |
223-
| • Docker images for each service |
224-
| • Kubernetes cluster (Deployments, Services) |
225-
+-----------------------------------------------+
226-
```
187+
> [!TIP]
188+
> Each service does not live in its own directory, but rather is organized within the main project structure. This allows for easier management and deployment of the entire application as a single unit, while still maintaining the modularity of the microservices architecture.
189+
190+
### Microservices Diagram
191+
192+
<p align="center">
193+
<a href="https://www.mermaidchart.com/app/projects/ab86aba4-5205-4ad5-bdfc-85dfba04f62f/diagrams/0ecda876-0581-4897-bac3-b6800daa2a14/version/v0.1/edit" target="_blank">
194+
<img src="images/microservices-diagram.png" alt="Microservices Architecture Diagram" style="border-radius: 8px;" width="100%">
195+
</a>
196+
</p>
197+
198+
> [!NOTE]
199+
> This diagram illustrates the microservices architecture of the Budget Management API, showing how different services interact with each other and external clients. Each service can be independently developed and deployed, allowing for scalability and maintainability.
200+
201+
### Full Architecture Diagram
202+
203+
<p align="center">
204+
<a href="https://www.mermaidchart.com/app/projects/ab86aba4-5205-4ad5-bdfc-85dfba04f62f/diagrams/b164e25e-68b3-417e-8753-5b718e23d996/version/v0.1/edit" target="_blank">
205+
<img src="images/architecture-diagram.png" alt="Architecture Diagram" style="border-radius: 8px;" width="100%">
206+
</a>
207+
</p>
227208

228209
> [!NOTE]
229-
> This architecture diagram illustrates the modular nature of the Budget Management API, showcasing how different services interact with each other and external clients. Each service can be independently developed and deployed, allowing for scalability and maintainability.
210+
> This architecture diagram illustrates the modular nature of the Budget Management API, showcasing how different services interact with each other and external clients. It also highlights the use of various technologies such as Docker, Kubernetes, and Nginx for deployment and scaling.
230211
231212
## **Project Structure**
232213

@@ -1035,11 +1016,18 @@ Contributions are welcome! Please fork the repository, create a feature branch,
10351016
10361017
## **Author**
10371018
1019+
This project is built with ❤️ by:
1020+
10381021
- **Son Nguyen** - [hoangsonww](https://github.com/hoangsonww)
1022+
1023+
For more information about me, you can visit my personal website or connect with me on LinkedIn:
1024+
10391025
- **Website:** [https://sonnguyenhoang.com](https://sonnguyenhoang.com)
10401026
- **Email:** [hoangson091104@gmail.com](mailto:hoangson091104@gmail.com)
10411027
- **LinkedIn:** [https://www.linkedin.com/in/hoangsonw](https://www.linkedin.com/in/hoangsonw)
1042-
- Feel free to reach out if you have any questions or feedback! 🚀
1028+
- **GitHub:** [@hoangsonww](https://github.com/hoangsonww)
1029+
1030+
Feel free to reach out if you have any questions or feedback! 🚀
10431031
10441032
---
10451033
@@ -1049,4 +1037,4 @@ Created with ❤️ by [Son Nguyen](https://sonnguyenhoang.com) in 2024. All rig
10491037
10501038
---
10511039
1052-
[⬆️ Back to Top](#budget-management-backend-api)
1040+
[⬆️ Back to Top](#budget-management-api---a-comprehensive-microservices-based-api-for-managing-budgets-expenses-users-and-more-)

0 commit comments

Comments
 (0)