Jobs is an open-source job marketplace application, powered by micro-services ☸️ architecture and cross-platform developed 📱🖥🐳 based on .NET 6.
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 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 used popular modern technologies. Also, configured CI/CD pipelines using GitHub Actions for building and testing the code and publishing docker image file 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 master branch on my Docker Hub with :latest tag.
Make sure you have installed and configured Docker for Windows in your machine. After that, you can run the below commands from the the main Jobs directory and get started with the Jobs
immediately.
docker-compose -f docker-compose.yml -f docker-compose.override.yml up -d
You should be able to browse different components of the application by using the below URLs :