Skip to content

This is an open-source job marketplace application, powered by micro-services ☸️ architecture and cross-platform developed 📱🖥🐳 based on .NET 8.

License

Notifications You must be signed in to change notification settings

MirolimMajidov/Jobs

Repository files navigation

Jobs

GitHub Workflow Status (branch) GitHub Workflow Status GitHub Workflow Status GitHub Workflow Status

Jobs is an open-source job marketplace application, powered by micro-services ☸️ architecture and cross-platform developed 📱🖥🐳 based on .NET 8.

Architecture Overview

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.

List of micro-services and infrastructure components

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.

Using the Jobs services

Ensure you have installed and configured Docker Desktop for Windows in your machine.

Running the services on Docker

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:

Running the services on Kubernetes (K8s)

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: