Thanks to visit codestin.com
Credit goes to github.com

Skip to content

AndriyBorkovich/mentor-sync

Repository files navigation

πŸš€ MentorSync

Backend - build & test UI - build & test Semantic Versioning Architecture Tests

MentorSync is a comprehensive mentorship platform connecting mentors and mentees for effective learning, guidance, and professional development.

πŸ“‹ Quick Navigation

🎯 Features

  • Mentor-Mentee Matching – Intelligent pairing based on skills, expertise, and interests
  • Session Scheduling – Interactive calendar for booking and managing mentorship sessions
  • Real-time Messaging – In-app chat for direct communication between mentors and mentees
  • Learning Materials – Curated library of resources and guidance documents shared by mentors
  • Availability Management – Mentors can set their availability and preferred mentoring hours
  • Ratings & Reviews – Transparent feedback system to build trust and quality assurance
  • Smart Recommendations – AI-driven suggestions for optimal mentor-mentee pairings

πŸ—οΈ Architecture

MentorSync follows a Modular Monolith architecture with independent feature modules:

Core Modules

Module Purpose Database Schema
Users Authentication, user profiles, skills management users
Materials Learning resources and knowledge base materials
Scheduling Session booking and availability management scheduling
Ratings Reviews and mentor ratings ratings
Recommendations ML-driven pairing and suggestions recommendations
Notifications Email and in-app notifications notifications

Key Architectural Features

βœ… Module Independence – Each module has isolated DbContext, entities, and features

βœ… Contracts-Only Dependencies – Modules communicate through .Contracts projects only

βœ… Clear Boundaries – Architecture tests validate module isolation

βœ… Scalability Path – Modules can be extracted to microservices

βœ… CQRS Pattern – Custom command/query handlers for explicit operation flow

πŸ› οΈ Tech Stack

Backend

  • Runtime: .NET 9 with C# 13
  • API Framework: ASP.NET Core Minimal APIs
  • Architecture: Modular Monolith with CQRS + VSA
  • ORM: Entity Framework Core + PostgreSQL (NpSQL)
  • Validation: FluentValidation
  • Authentication: JWT with refresh tokens
  • Service Orchestration: .NET Aspire

Frontend

  • Framework: React 18+ with TypeScript
  • Build Tool: Vite
  • Styling: TailwindCSS
  • State Management: React Context API + Custom Hooks
  • HTTP Client: Axios
  • Notifications: react-toastify
  • Forms: react-hook-form

Infrastructure

  • Database: PostgreSQL (multi-schema per module)
  • Hosting: Azure Container Apps
  • IaC: Bicep templates
  • CI/CD: GitHub Actions
  • Versioning: Semantic Versioning with automated releases

⚑ Quick Start

Prerequisites

  • .NET 9 SDK
  • Node.js 20+
  • Docker
  • Git

Installation

  1. Clone the repository:

    git clone https://github.com/AndriyBorkovich/mentor-sync.git
    cd mentor-sync
  2. Navigate to Aspire host:

    cd aspire/MentorSync.AppHost
  3. Run the application:

    dotnet run

    This will start:

  4. Access the application:

πŸ“š Documentation

Complete documentation is organized by topic:

Getting Started

Architecture & Design

Development Guides

Module Deep Dives

πŸ“– Browse All Documentation

🀝 Contributing

Commit Convention

All commits follow Conventional Commits:

feat: add material recommendations        # MINOR version bump
fix: resolve session timeout              # PATCH version bump
break: migrate to OAuth2                  # MAJOR version bump
docs: update API documentation            # No version change

See Commit Guide for details.

Development Workflow

  1. Create a feature branch from master

  2. Make commits with conventional format

  3. Push to GitHub and create a pull request

  4. Run tests locally:

    # Backend tests
    dotnet test tests/MentorSync.ArchitectureTests/
    
    # Frontend tests
    cd src/MentorSync.UI && npm test
  5. Merge to master when approved

  6. Automatic release – Semantic versioning creates release automatically

Code Standards

  • Architecture Tests: Validate module boundaries and dependencies
  • C# Guidelines: See Coding Standards
  • React Guidelines: See Component Standards
  • Linting: ESLint + .editorconfig

πŸ“ Versioning

MentorSync uses Semantic Versioning 2.0.0:

MAJOR.MINOR.PATCH
v1.2.3
  • MAJOR: Breaking changes (v1.0.0 β†’ v2.0.0)
  • MINOR: New features (v1.0.0 β†’ v1.1.0)
  • PATCH: Bug fixes (v1.0.0 β†’ v1.0.1)

Automatic Releases: Versions are calculated from commit messages and released automatically via GitHub Actions.

πŸ“‹ View Release History

πŸ”§ Project Structure

MentorSync/
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ Modules/              # Feature modules (Users, Materials, etc.)
β”‚   β”œβ”€β”€ MentorSync.API/       # API entry point
β”‚   β”œβ”€β”€ MentorSync.UI/        # React frontend
β”‚   └── MentorSync.SharedKernel/
β”œβ”€β”€ aspire/                   # .NET Aspire orchestration
β”œβ”€β”€ tests/                    # Test projects
β”œβ”€β”€ docs/                     # Comprehensive documentation
β”œβ”€β”€ .github/
β”‚   β”œβ”€β”€ workflows/            # GitHub Actions (CI/CD, releases)
β”‚   └── git-commit-instructions.md
└── Directory.Build.props     # Global project configuration

πŸš€ CI/CD Pipeline

Workflow Trigger Purpose
Backend Build & Test Push to any branch Compile and test .NET code
UI Build & Test Push to any branch Build and test React app
Semantic Versioning Push to master Auto-calculate version and create release
Azure Deploy Manual / Release tag Deploy to Azure Container Apps

πŸ“ž Support & Contact

πŸ“„ License

This project is licensed under the MIT License – see the LICENSE file for details.