EduTrack is a comprehensive enterprise-grade education management system built with Clean Architecture principles, Domain-Driven Design (DDD), and modern .NET 10 technologies with an Angular frontend. Designed for educational institutions of all sizes, from small schools to large universities.
- π― Project Vision
- π Key Business Features
- βοΈ Key Technical Features
- π Quick Start Guide
- βοΈ Prerequisites
- ποΈ Database Setup
- π Running the Backend
π °οΈ Running the Frontend- π§ͺ Running Tests
- π οΈ Developer Guide
- π§° Technology Stack
- π€ Contributing
- π License
- π Support & Community
- π¨βπ» About the Maintainer
Building the next generation of education management software with enterprise-grade architecture, multi-database support, and scalable design patterns.
- π Live Demo: Coming Soon
- ποΈ Architecture Documentation: Full guide coming soon. For an immediate overview, please refer to the Developer's Guide and the Clean Architecture Guide
π₯ If this project helps you, please give it a star β - It means a lot to the team!
- π Student Lifecycle Management β Admission, enrollment, progression, and graduation
- π« Academic Structure β Departments, programs, courses, and scheduling with conflict detection
- π¨βπ« Faculty Management β Profiles, academic titles, workload tracking, and employment workflows
- π Grades & Assessments β Flexible grading schemes, assessment weightings, and transcript generation
- π Access Control β Role-based and permission-based authorization per user or role
- π Reporting & Analytics β Dashboards, custom reports, and PDF/Excel/CSV exports
π See full business features β
- ποΈ Clean Architecture with Domain-Driven Design and strict layer separation
- β‘ CQRS via MediatR β all commands and queries handled through a pipeline
- ποΈ Multi-Database Support β PostgreSQL (primary), SQL Server, Oracle, SQLite
- π JWT Authentication with role-based and permission-based authorization
- π§ͺ Comprehensive Testing β Domain (β₯95%), Application (β₯80%), and integration tests
- π CI/CD Ready β GitHub Actions, Docker multi-stage builds, OpenAPI/Swagger
π See full technical features β
Before you begin, ensure you have the following installed:
- β .NET 10 SDK (10.0 or later)
- β
Database Server (choose one):
- PostgreSQL 14+ (Recommended)
- β
Development IDE:
- Visual Studio 2026+ (Recommended)
- VS Code with C# extension
- β Git for version control
- β Node.js 18+ (for frontend development)
1. Install PostgreSQL
- Windows: Download the installer from postgresql.org/download or use Chocolatey:
choco install postgresql
- macOS:
brew install postgresql
- Linux (Ubuntu/Debian):
sudo apt install postgresql postgresql-contrib
2. Create the database
creatdb EduTrackDbOr using psql:
CREATE DATABASE "EduTrackDb";3. Configure the connection string
Create appsettings.Development.json inside backend/EduTrack/src/EduTrack.Api/ with your credentials:
{
"ConnectionStrings": {
"DefaultConnection": "Host=localhost;Port=5432;Database=EduTrackDb;Username=postgres;Password=yourpassword;"
}
}π Configure PostgreSQL with pgAdmin 4 β step-by-step guide for setting up the database using the pgAdmin UI.
SQL Server
{
"ConnectionStrings": {
"DefaultConnection": "Server=localhost;Database=EduTrackDb;Trusted_Connection=true;MultipleActiveResultSets=true"
}
}Oracle
{
"ConnectionStrings": {
"DefaultConnection": "User Id=youruser;Password=yourpassword;Data Source=localhost:1521/XEPDB1"
}
}git clone https://github.com/mahedee/clean-arch-pro.git
cd clean-arch-proCreate appsettings.Development.json inside backend/EduTrack/src/EduTrack.Api/ (this file is git-ignored). See the Database Setup section above for connection string examples.
π‘ Use
appsettings.Production.jsonas a template.
cd backend/EduTrack
dotnet restorecd backend/EduTrack/src/EduTrack.Api
dotnet ef database updateIf
dotnet efis not found, install it:dotnet tool install --global dotnet-ef
cd backend/EduTrack/src/EduTrack.Api
dotnet run| URL | Description |
|---|---|
http://localhost:6100 |
API base URL |
http://localhost:6100/swagger |
Swagger / OpenAPI UI |
Run with a specific launch profile:
dotnet run --launch-profile http # HTTP only
dotnet run --launch-profile https # HTTPS + HTTP
dotnet run --launch-profile Staging # Staging environment
dotnet run --launch-profile Production # Production environmentUsing Visual Studio or VS Code:
- Visual Studio: Open
backend/EduTrack/EduTrack.sln, selectEduTrack.Api, and press F5. - VS Code: Open the
backend/EduTrackfolder and use the Run and Debug panel (a launch configuration is included in.vscode/).
| Problem | Fix |
|---|---|
connection refused on DB |
Ensure PostgreSQL is running and credentials are correct in appsettings.Development.json |
| Port 6100 already in use | Change applicationUrl in Properties/launchSettings.json or stop the conflicting process |
| Pending migrations error | Run dotnet ef database update from the EduTrack.Api folder |
dotnet ef not found |
Run dotnet tool install --global dotnet-ef |
cd frontend/edutrack-ui
npm installcd frontend/edutrack-ui
npm startThe app is available at http://localhost:4200. The dev server proxies API calls to http://localhost:6100 (backend must be running). Changes to source files are reflected automatically via hot reload.
Run on a custom port:
ng serve --port 4201npm run build
# or:
ng build --configuration productionOutput is generated in dist/edutrack-ui/.
npm run build
node dist/edutrack-ui/server/server.mjsThe easiest way to start both the backend and frontend together is to use the provided PowerShell scripts from the repository root.
Start both applications at once:
.\scripts\run-edutrack-all.ps1This opens each application in its own terminal window:
| Script | What it does |
|---|---|
scripts\run-edutrack-all.ps1 |
Launches backend + frontend in separate windows |
scripts\run-edutrack-backend.ps1 |
Builds and starts the backend API only |
scripts\run-edutrack-frontend.ps1 |
Installs dependencies and starts the Angular dev server only |
Once running, the following URLs are available:
| URL | Description |
|---|---|
http://localhost:6100 |
Backend API |
http://localhost:6100/swagger |
Swagger / OpenAPI UI |
http://localhost:4200 |
Angular frontend |
Prerequisites: PowerShell 7+ must be installed. .NET 10 SDK and Node.js must be on the system PATH.
Press Ctrl+C in each window to stop the respective application.
| Problem | Fix |
|---|---|
ng: command not found |
Run npm install -g @angular/cli |
npm install fails |
Delete node_modules/ and package-lock.json, then re-run npm install |
| API calls return 404 or CORS errors | Ensure the backend is running on http://localhost:6100 |
| Port 4200 already in use | Use ng serve --port 4201 or stop the conflicting process |
# Run all tests
cd backend/EduTrack
dotnet test
# Run a specific test project
dotnet test tests/EduTrack.Domain.UnitTests/
# Run with code coverage
dotnet test --collect:"XPlat Code Coverage"See backend unit tests and backend test coverage for details.
cd frontend/edutrack-ui
# Run tests in watch mode
npm test
# Run tests headless (CI)
npm run test:ciSee frontend unit tests and frontend test coverage for details.
For a full developer reference β including project structure, architecture deep-dive, coding conventions, logging, and configuration β see the Developer's Guide.
The solution follows a four-layer Clean Architecture layout. See Developer's Guide β Project Structure for the full breakdown.
EduTrack is built on Clean Architecture, DDD, and CQRS. See the Clean Architecture Overview for layer dependencies, design decisions, and key patterns.
Adding a new feature follows a consistent CQRS workflow across Domain β Application β Infrastructure β API β Tests. See the API Implementation Guide for a worked example.
# Add a new migration
dotnet ef migrations add "MigrationName" \
--project src/EduTrack.Infrastructure \
--startup-project src/EduTrack.Api
# Apply migrations
dotnet ef database update --project src/EduTrack.Api
# Drop database (development only)
dotnet ef database drop --project src/EduTrack.Api --force# Create a feature branch
git checkout -b feature/your-feature-name
# Commit with a descriptive message referencing the issue
git commit -m "Add student CRUD operations - Fixes #18"
# Push and open a pull request
git push origin feature/your-feature-nameSee CONTRIBUTING.md and pull request guidelines for the full process.
- Entities: singular noun β
Student,Course - DTOs: suffix with
DtoβStudentDto - Interfaces: prefix with
IβIStudentRepository - Logging: structured logging via
ILogger<T>
| Technology | Version | Purpose | Documentation |
|---|---|---|---|
| .NET | 10.0 | Core framework | π .NET Docs |
| ASP.NET Core | 10.0 | Web API framework | π ASP.NET Docs |
| Entity Framework Core | 10.0 | ORM & Data Access | π EF Core Docs |
| MediatR | 12.x | CQRS & Mediator pattern | π MediatR |
| AutoMapper | 12.x | Object mapping | π AutoMapper |
| FluentValidation | 11.x | Input validation | π FluentValidation |
| Serilog | 3.x | Structured logging | π Serilog |
| xUnit | 2.x | Unit testing framework | π xUnit |
| Database | Status | Performance | Use Case |
|---|---|---|---|
| PostgreSQL | β Primary | Excellent | General purpose, JSONB support |
| SQL Server | β Supported | Excellent | Enterprise environments |
| Oracle | β Enterprise | Good | Large enterprise systems |
| SQLite | π Testing Only | Good | Development & testing |
| Technology | Version | Purpose |
|---|---|---|
| Angular | 18.x | Frontend framework |
| Angular Material | 18.x | UI components |
| TypeScript | 5.x | Type safety |
| RxJS | 7.x | Reactive programming |
We welcome contributions from developers of all skill levels! Whether you're fixing bugs, adding features, improving documentation, or sharing ideas, your contribution matters. Please read CONTRIBUTING.md before submitting a pull request.
Found a bug or have a suggestion? Please check existing issues first, then:
- Fork the repository and create your feature branch
- Follow our coding standards (see CONTRIBUTING.md)
- Write tests for your changes
- Submit a pull request following our PR Guidelines
- Improve existing documentation
- Add code examples and tutorials
- Translate documentation to other languages
- Create video tutorials or blog posts
Thanks to all the amazing people who have contributed to this project!
This project is licensed under the MIT License - see the LICENSE file for details.
- β Commercial use - Use in commercial projects
- β Modification - Modify the code as needed
- β Distribution - Distribute your modifications
- β Private use - Use privately without restrictions
β οΈ Attribution - Include original license and copyright notice
- π Documentation: Check our comprehensive docs first
- π Issues: GitHub Issues
- π¬ Discussions: GitHub Discussions
- π§ Email: mahedee.hasan@gmail.com
If this project helps you build better applications:
- β Star the repository on GitHub
- π¦ Share on social media (Twitter, LinkedIn)
- π Write a blog post about your experience
- π£οΈ Tell your colleagues about EduTrack
Mahedee Hasan β Software Architect
- π’ Experience: 17+ years in enterprise software development
- π Website: mahedee.net
- πΌ LinkedIn: linkedin.com/in/mahedee
- π¦ Twitter: @mahedee_hasan
