Skip to content

Microservice-driven web platform for managing international language programs. Backend: C#, ASP.net, GRPC, RabbitMQ, EF, Vertical slice architecture, Docker, PostgreSQL. Clients: Monorepo, TypeSctipt, React, Zustand

Notifications You must be signed in to change notification settings

gitEugeneL/LinguaPass

Repository files navigation

Lingua Pass

A scalable, microservice-driven web platform for managing international language programs.

The frontend layer consists of two independent PWA portals (React, TypeScript) maintained in a PNPM-based monorepository with shared UI and utility packages.

The backend is composed of isolated .NET microservices designed using Vertical Slice Architecture and Clean Architecture, each exposing its own bounded context and operating on a dedicated database. Binary data is handled through object storage with server-side validation and sanitization.

Inter-service communication is split between gRPC for high-throughput, low-latency synchronous RPC calls and RabbitMQ (MassTransit) for asynchronous, fire-and-forget operations and event distribution.

A YARP-based API Gateway provides centralized routing, request pre-processing, authentication enforcement, and load balancing across internal service clusters. The system runs fully containerized via Docker, enabling reproducible environments and horizontal scaling of individual services.

πŸ‘· Frameworks, Libraries and Technologies

PWA Clients

Microservices

πŸ–₯️ List of Clients

  • Customer Portal: Application for users to register for international language courses in various countries, upload required documents, and track application status, solving the problem of a complicated registration process and lack of transparency.

  • Manager Portal: Application for administrators to manage educational programs, user data, and documents in real time, eliminating difficulties related to manual administration and lack of centralized data.

πŸ—οΈ List of Microservices

  • Gateway Service: Acts as the single entry point, handling routing, request validation and load balancing across internal services.

  • Identity Service: Handles authentication, authorization, JWT/refresh token lifecycle, role management, password hashing and security policies.

  • Storage Service: Manages secure binary file storage using MinIO, including validation, size checks and malicious-content protection.

  • Account Service: Stores and manages user account data, personal details, and selected program information.

  • Course Service: Manages educational programs, languages, schools and related administrative datasets.

  • Progress Service: Tracks and updates user application progress in real time across all registration stages.

  • MailSender Service: Asynchronous email dispatching for internal services through RabbitMQ (e.g., notifications, system messages).

πŸ”οΈ Microservices diagram

Microservices diagram

🐳 List of Docker Containers

  • gateway.service – reverse proxy gateway (YARP) container.

  • rabbitmq – message broker container for asynchronous communication.

  • minio – object storage container for binary file handling.

  • identity.service – ASP.NET Core container for the Identity microservice.

  • identity.database – PostgreSQL database container for the Identity service.

  • account.service – ASP.NET Core container for the Account microservice.

  • account.database – PostgreSQL database container for the Account service.

  • course.service – ASP.NET Core container for the Course microservice.

  • course.database – PostgreSQL database container for the Course service.

  • progress.service – ASP.NET Core container for the Progress microservice.

  • progress.database – PostgreSQL database container for the Progress service.

  • storage.service – ASP.NET Core container for the Storage microservice (MinIO integration).

  • mail-sender.service – ASP.NET Core container for the asynchronous email dispatching microservice.

  • customer-portal.frontend – React frontend container for the Customer Portal.

  • manager-portal.frontend – React frontend container for the Manager Portal.

🩺 How to run tests

Allows you to run all integration and unit tests.

> dotnet test  # donet SKD is required

πŸš€ How to run the application

make commands work on Linux/macOS. Alternatively, Docker Compose can be used.

🌐 Backend

Action Make Docker Compose
Build make build-backend docker compose -f docker-compose.backend.yml build --no-cache
Start make up-backend docker compose -f docker-compose.backend.yml up --build
Stop make down-backend docker compose -f docker-compose.backend.yml down
Stop & remove volumes make down-backend-clean-volumes docker compose -f docker-compose.backend.yml down -v

πŸ–₯️ Frontend

Action Make Docker Compose
Build make build-frontend docker compose -f docker-compose.frontend.yml build --no-cache
Start make up-frontend docker compose -f docker-compose.frontend.yml up
Stop make down-frontend docker compose -f docker-compose.frontend.yml down

πŸ§ͺ Test Data

SQL scripts automatically create tables and populate databases with test data when Docker containers start.

Role URL Login Password
Administrator http://localhost:5174 (Manager portal) admin@dev.com devDev123!
User http://localhost:5173 (Customer portal) dev@dev.com devDev123!

πŸ’Ύ Database diagrams

  • Account.database (Account.service)

Account database

  • Course.database (Course.service)

Course database

  • Identity.database (Identity.service)

Identity database

  • Progress.database (Progress.service)

Progress database

  • MinIO Storage (Storage.service)

MinIO Storage

🎑️ Clients screenshots

Responsive interface with the ability to adapt to any device

responsive-1
responsive-2 responsive-3

Authorization and Authentication

authorization-1 authorization-2 authorization-3

Dynamic adaptation to step and user selection

dynamic-1 dynamic-2

User selection and information input forms

form-1 form-2-3

Loading, checking and validation of user files

files-1-2 files-3

Summary and application submission

submission-1.png submission-2.png

Administrator login to the system and administrator main page

administratorMain-1.png administratorMain-2.png

Managing available programs in the system for the user

managin-1
managin-2 managin-3

List of current and archived students with filtering by update date

list-1

A page for managing student applications and request status, with real-time interaction

interaction-1
interaction-2 interaction-3

About

Microservice-driven web platform for managing international language programs. Backend: C#, ASP.net, GRPC, RabbitMQ, EF, Vertical slice architecture, Docker, PostgreSQL. Clients: Monorepo, TypeSctipt, React, Zustand

Topics

Resources

Stars

Watchers

Forks