Skip to content

Graduated project using Microservices architecture, K8S, .NET and ReactJS

Notifications You must be signed in to change notification settings

cowienduckie/promag

Repository files navigation

ProMag - A Project Management Web Application

wakatime

Introduction

ProMag is the graduated project for my engineering degree. It is a web application that helps members in a project team can easily to collaborate and manage personal tasks, and the project's progress too!

The project is built with microservice architecture using .NET 8 and ReactJS. In addition, it can run locally with Docker or any Kubernetes cluster, or cloud services. Moreover, it also provide monitoring tools for tracing logging and metrics, CI/CD pipelines for building and testing.

Technical Stacks

Local Development

Prepare For Development

npm install
dotnet build Promag.sln

Docker Compose

From the root directory promag of the project, run the following command:

docker compose -f docker-compose.yml -f docker-compose.override.yml -p promag up -d --build

Kubernetes

Prerequisites

Prepare Steps

Step 1. Enable Kubernetes in Docker Desktop and enable dns, helm3, registry, storage

Step 2. Get into the promag directory:

cd <path-to-promag-directory>

Step 3. Create a namespace for the project named local:

kubectl create namespace local

Step 4. Run a local registry using this command at port 32000:

docker run -d -p 32000:5000 --restart=always --name registry registry:2

Deploy Steps

Step 1. Build the images:

sh ./deploy-all.sh --image-build --skip-infrastructure --skip-service

Step 2. Push the images to the local registry:

sh ./deploy-all.sh --image-push --skip-clean --skip-service --skip-infrastructure

Step 3. Deploy the infrastructure using helm for secret, pvc, rabbitmq, mailhog, postgresql:

sh ./deploy-all.sh --skip-clean --skip-service

Step 4. Deploy the services, including identity server, graphql gateway, api gateway, masterdata api, personaldata api, portal api, communication, services status:

sh ./deploy-all.sh --skip-clean --skip-infrastructure

Step 5. Checking the status of the components:

kubectl get pods --namespace=local
kubectl get services --namespace=local

After all the pods are running, you can access the services via the following URLs: