Jobs is an open-source job marketplace application, powered by micro-services ☸️ architecture and cross-platform developed 📱🖥🐳 based on .NET 8.
The architecture proposes a microservice-oriented architecture implementation with multiple autonomous microservices (each one owning its own data/db) and has one shared project to work with the Repository and Controller for CRUD operations, but implementing different approaches within each microservice using REST/HTTP as the communication protocol between the client apps, and supports asynchronous communication for data updates propagation across multiple services based on gRPC/HTTP2. All microservices are based on SOLID design principles and use popular modern technologies. Also, configured the CI/CD pipelines using GitHub Actions for building and testing the code and publishing the docker image files to the Docker Hub.
№ | Service | Description | Build status | Endpoints |
---|---|---|---|---|
1. | API Gateway (Ocelot) | This service is responsible for all other micro-services | ||
2. | Identity API (JWT Token, NLog logging, FW Core, gRPC, CRUD by MySQL, RabbitMQ, FluentValidation, DTO, AutoMapper, Functionality and Unit testing with MSTest) | Identity management service | APIs | |
3. | Job API (NLog logging, FW Core, CRUD by SQL Server, RabbitMQ, FluentValidation, DTO, AutoMapper, Unit Testing with NUnit) | This service is responsible for the main part of the current application. All CRUD operations related to Jobs will be here. | APIs | |
4. | Payment API (Serilog logging, Repocitory, CRUD by MongoDB and Redis, RabbitMQ, FluentValidation, DTO, AutoMapper, Unit Testing with xTest) | Responsible for financial and payments | APIs |
Each microservice has its own docker image file with the latest code of the master branch on my Docker Hub with the latest
tag.
Ensure you have installed and configured Docker Desktop for Windows in your machine.
You need to just run the commands below from the main Jobs repository directory and get started with the Jobs
services immediately.
docker-compose -f docker-compose.yml -f docker-compose.override.yml up -d
You should be able to browse each service of the application by using the below URLs:
- API Gateway's status
- Identity service | Identity service for gRPC
- Jobs service
- Payment service
- RabbitMQ Management
Before running the Jobs services, you need to make sure you have enabled the Kubernetes from the Docker Desktop. Then you can run one of the scripts of commands below from the main Jobs repository's K8s\Commands
directory and get started with the Jobs
services immediately:
- StartServices.sh - For starting all Jobs services.
- StopServices.sh - For stopping all Jobs services.
- RestartServices.sh - For stopping and starting all Jobs services.
You should be able to browse each service of the application by using the below URLs: