MentorSync is a comprehensive mentorship platform connecting mentors and mentees for effective learning, guidance, and professional development.
- π― Features
- ποΈ Architecture
- π οΈ Tech Stack
- β‘ Quick Start
- π Documentation
- π€ Contributing
- π Versioning
- 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
MentorSync follows a Modular Monolith architecture with independent feature 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 |
β 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
- 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
- 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
- Database: PostgreSQL (multi-schema per module)
- Hosting: Azure Container Apps
- IaC: Bicep templates
- CI/CD: GitHub Actions
- Versioning: Semantic Versioning with automated releases
- .NET 9 SDK
- Node.js 20+
- Docker
- Git
-
Clone the repository:
git clone https://github.com/AndriyBorkovich/mentor-sync.git cd mentor-sync -
Navigate to Aspire host:
cd aspire/MentorSync.AppHost -
Run the application:
dotnet run
This will start:
- Backend API (http://localhost:5001)
- Frontend UI (http://localhost:5173)
- PostgreSQL database
- All supporting services
-
Access the application:
- Frontend: http://localhost:5173
- API Swagger: http://localhost:5001/swagger
- Aspire Dashboard: http://localhost:15177
Complete documentation is organized by topic:
- Build Instructions β Detailed setup guide
- Semantic Versioning β Release and version strategy
- Architecture Overview β System design and patterns
- Architecture Testing β Quality assurance approach
- Modular Design β Module structure
- React Components β Frontend best practices
- C# Commands & Queries β Backend patterns
- API Client & Services β HTTP integration
- Error Handling β Exception strategies
- Users Module
- Materials Module
- Scheduling Module
- Ratings Module
- Recommendations Module
- Notifications Module
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 changeSee Commit Guide for details.
-
Create a feature branch from
master -
Make commits with conventional format
-
Push to GitHub and create a pull request
-
Run tests locally:
# Backend tests dotnet test tests/MentorSync.ArchitectureTests/ # Frontend tests cd src/MentorSync.UI && npm test
-
Merge to master when approved
-
Automatic release β Semantic versioning creates release automatically
- Architecture Tests: Validate module boundaries and dependencies
- C# Guidelines: See Coding Standards
- React Guidelines: See Component Standards
- Linting: ESLint + .editorconfig
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
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
| 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 |
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Author: Andrii Borkovych
This project is licensed under the MIT License β see the LICENSE file for details.