A layered School Management system built using ASP.NET Core 8 for managing student affairs in schools.
The system adopts Clean Architecture to ensure modularity, testability, and scalability.
- Manages student and parent profiles
- Tracks attendance and absences
- Records grades and assessments
- Organizes classrooms, branches, and sections
- Handles academic years, terms, and study plans
- Manages exams, committees, and seating systems
Handles all user interaction and controller logic.
- Controllers/ – HTTP entry points.
- ViewModels/ – Used to shape input/output data.
- Helper/ – Utilities like:
- Validation attributes (
FullNameValidationAttribute,SpaceValidationAttribute, etc.) - Mapping (
MappingProfiles.cs) - Permissions (
UserPermissions.cs) - Session handling (
SessionExtensions.cs)
- Validation attributes (
- Services/ –
CurrentUserServices.csmanages logged-in user context. - Views/ – Razor views if needed.
- wwwroot/ – Public static assets (CSS, JS, images).
✨ This layer is isolated from business logic and data access.
Defines application-specific contracts, interfaces, and shared services.
- Common/:
IGenericRepository,IGenericService,IRepositoryManagerICurrentUserServices.cs– Abstraction of user contextIResult.cs,ExceptionHelper.cs,BaseService.csISchoolErpSysContext– Gateway to database context
💡 This layer doesn't reference infrastructure. It contains core application behaviors.
Implements external concerns and persistence (EF Core).
- Data/SchoolErpSysContext.cs – Main
DbContextwith all entities - EntityConfigurations/ – Fluent API configuration per entity, e.g.:
AcademicDeptConfiguration.cs,StudentConfiguration.cs,AttendanceConfiguration.cs
- Common/ – Helpers like
GetIncludePath.csfor eager-loading support
🛠 This layer depends on EF Core and implements the contracts defined in Application.
Defines core business models and rules.
Entities include:
- Student-related:
Student.cs,Parent.cs,StuClassRoom.cs,StuEnroll.cs,StuDocument.cs,StuExamCommittee.cs,StuTermSuccess.cs,StuYearSuccess.cs,StuParent.cs - Academic Structure:
AcademicDept.cs,AcademicSection.cs,AcademicYear.cs,Branch.cs,SchoolGrade.cs,ClassRoom.cs,Term.cs - Subjects & Assessment:
Subject.cs,AssessmentCriterion.cs,CriteriaPerSubject.cs,GradesAndAssessmentCriterion.cs,Grade.cs - Staff:
Employee.cs,Teacher.cs,Teaching.cs - Attendance & Exams:
Attendance.cs,Exam.cs,SeatSecretNumber.cs - Other:
StudyPlan.cs,WaitingList.cs,InitializeNationality.cs,SysUser.cs,StuAccountStatus.cs
🧠 These entities are plain C# objects (POCOs) and free from infrastructure dependencies.
git clone https://github.com/adnanmoh/SchoolManagementSystem.git
cd SchoolManagementSystem
# Edit appsettings.json with your connection string
dotnet ef database update
dotnet runSwagger or Postman can be used to explore API endpoints.