Skip to content

adnanmoh/SchoolManagementSystem

Repository files navigation

🏫 School Management System

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.


🎯 What This System Does

  • 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

🧱 Architecture Overview

🖥 1. Presentation Layer (Clean School Project)

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)
  • Services/CurrentUserServices.cs manages 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.


💼 2. Application Layer (Application)

Defines application-specific contracts, interfaces, and shared services.

  • Common/:
    • IGenericRepository, IGenericService, IRepositoryManager
    • ICurrentUserServices.cs – Abstraction of user context
    • IResult.cs, ExceptionHelper.cs, BaseService.cs
    • ISchoolErpSysContext – Gateway to database context

💡 This layer doesn't reference infrastructure. It contains core application behaviors.


🏗 3. Infrastructure Layer (Infrastructure)

Implements external concerns and persistence (EF Core).

  • Data/SchoolErpSysContext.cs – Main DbContext with all entities
  • EntityConfigurations/ – Fluent API configuration per entity, e.g.:
    • AcademicDeptConfiguration.cs, StudentConfiguration.cs, AttendanceConfiguration.cs
  • Common/ – Helpers like GetIncludePath.cs for eager-loading support

🛠 This layer depends on EF Core and implements the contracts defined in Application.


🧬 4. Domain Layer (Entity/ inside Clean School Project)

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.


🛠 Getting Started

git clone https://github.com/adnanmoh/SchoolManagementSystem.git
cd SchoolManagementSystem

# Edit appsettings.json with your connection string

dotnet ef database update
dotnet run

Swagger or Postman can be used to explore API endpoints.


About

A full-featured, layered School Management System built with ASP.NET Core MVC using Clean Architecture.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages