Skip to content

Latest commit

Β 

History

39 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🏫 TSWD Education Management System

.NET Core Angular TypeScript Bootstrap Entity Framework Core Dapper Multi-Tenant

An Enterprise-Grade, Multi-Tenant Education & School Management Platform
Built with .NET 8 Clean Architecture & Angular 20 with dynamic GSAP animations.


🌟 System Overview

TSWD Education Management is a comprehensive, multi-tenant SaaS platform designed to streamline school operations, academic administration, fee management, and communication. Every school operates as an independent tenant with custom configurations, academic sessions, departments, staff hierarchies, and role-based permissions.

✨ Key Architectural Highlights

  • 🌐 True Multi-Tenancy: Data isolation per school/tenant with tenant-scoped configurations, academic terms, and branding.
  • πŸ—οΈ Clean Architecture: Separation of concerns across Domain, Application, Infrastructure (EF Core & Dapper), and Presentation layers.
  • ⚑ Hybrid Data Access: Combines Entity Framework Core 8 for rich domain mutations with Dapper for high-speed, read-optimized queries and reporting.
  • πŸ” Dynamic RBAC & Permissions: Fine-grained access control where roles and permissions can be customized per tenant dynamically without schema modifications.
  • 🎨 Premium UI/UX: Built with Angular 20, Bootstrap 5, Bootstrap Icons, and smooth animations powered by GSAP and Locomotive Scroll.

πŸ“‚ Monorepo Repository Structure

This repository is structured as an integrated monorepo containing both the C# backend API and the TypeScript/Angular frontend application:

TSWD.EducationManagement/               # Root Monorepo
β”œβ”€β”€ TSWD.EducationManagement/           # βš™οΈ C# .NET 8 Backend Solution
β”‚   β”œβ”€β”€ TSWD.EducationManagement/       # API / Presentation Layer (Controllers, Middlewares, Program.cs)
β”‚   β”œβ”€β”€ ...Application/                 # Application Layer (Services, Interfaces, DTOs, CQRS)
β”‚   β”œβ”€β”€ ...Domain/                      # Domain Layer (Entities, Enums, Value Objects, Tenant Models)
β”‚   β”œβ”€β”€ ...EntityFrameworkCore/         # EF Core Infrastructure (DbContext, Migrations, Repositories)
β”‚   β”œβ”€β”€ ...Dapper/                      # Dapper Infrastructure (High-performance SQL read queries)
β”‚   └── ...Shared/                      # Shared Utilities & Extensions
β”‚
└── TSWD.EducationManagement.UI/        # 🎨 Angular 20 Frontend Application
    β”œβ”€β”€ src/
    β”‚   β”œβ”€β”€ app/
    β”‚   β”‚   β”œβ”€β”€ components/             # Dashboard, Tenants, School Settings, Users, Classes
    β”‚   β”‚   β”œβ”€β”€ pre-home/               # Interactive Landing Pages & Feature Tours
    β”‚   β”‚   β”œβ”€β”€ proxy/                  # Auto-generated & typed API service proxies & DTOs
    β”‚   β”‚   └── shared/                 # Reusable UI components (Toasters, Loaders, Modals)
    β”‚   β”œβ”€β”€ environments/               # Environment configuration files
    β”‚   └── styles.css                  # Global design tokens & responsive utilities
    β”œβ”€β”€ angular.json                    # Angular Workspace configuration
    └── package.json                    # Frontend dependencies and scripts

πŸ—οΈ System Architecture & Dependency Diagram

graph TD
    UI["🎨 TSWD.EducationManagement.UI (Angular 20 / TypeScript)"]
    API["πŸš€ TSWD.EducationManagement (API / Presentation Layer)"]
    APP["πŸ“¦ TSWD.EducationManagement.Application (Application Services & DTOs)"]
    EF["πŸ—„οΈ TSWD.EducationManagement.EntityFrameworkCore (EF Core 8 Repositories)"]
    DAP["⚑ TSWD.EducationManagement.Dapper (Dapper Read Queries)"]
    DOM["πŸ›οΈ TSWD.EducationManagement.Domain (Entities, Tenant Rules, Enums)"]
    SHR["πŸ”§ TSWD.EducationManagement.Shared (Shared Utilities)"]

    UI -->|REST / JSON / JWT| API
    API --> APP
    APP --> EF
    APP --> DAP
    EF --> DOM
    DAP --> DOM
    DOM --> SHR
    APP --> SHR
Loading

🏫 Modules & Operational Implementation Status

All 10 core institutional modules are Fully Implemented & Operational across both the C# .NET 8 Backend (Clean Architecture + EF Core/Dapper) and the Angular 20 Standalone Frontend UI:

1. βš™οΈ Tenant & School Settings (/home/school-settings) - βœ… Implemented

  • General Configuration: School Name, Code, Branding (Logo, Themes), Locale, Timezones.
  • Academic Rules: Custom Grading Policies (A+, A, B), Promotion Criteria, Attendance Logic (Half-day/Full-day).
  • Finance Configuration: Fee structures, late fine calculation rules, scholarships, discount policies.

2. πŸ§‘β€πŸ« Departments & Staff Management (/home/departments-staff) - βœ… Implemented

  • Faculty & Departments: Manage Academic & Administrative departments with dynamic teacher allocation.
  • Staff Onboarding & Hiring: Integrated modal workflow to onboard new teachers with employee ID, salary, and designation.
  • Teacher Replacement Workflow: Replace departing/retiring faculty while preserving historical subject mapping and class schedules.

3. πŸ‘¨β€πŸŽ“ Student Management & Admissions (/home/students-management) - βœ… Implemented

  • Student Directory & Admissions: Interactive enrollment workflow with parent/guardian demographics and emergency contacts.
  • 360Β° Academic Tracking: Status tracking (Enrolled, Admitted, Graduated, Transferred) with automated enrollment number generation.

4. πŸ“¦ Inventory & Staff Asset Allocation (/home/inventory-asset) - βœ… Implemented

  • Institutional Catalog: Track stationary, lab equipment, IT assets, sports gear, and classroom furniture stock levels.
  • Staff Asset Issuance & Return: Allocate laptops, projectors, keys, and teaching materials to staff members with check-in/out logging.

5. πŸ’° Finance & Accounting (/home/finance-accounting) - βœ… Implemented

  • Fee Structure & Ledgers: Tuition, Library, Transport, and Lab fee heads with payment frequency schedules.
  • Receipts & Collections: Automated receipt generation, payment mode tracking (Cash, Card, Bank Transfer, Online), and scholarship concessions.

6. 🚌 Transport & Fleet Management (/home/transport-management) - βœ… Implemented

  • Bus Fleet & Routes: Manage vehicle numbers, assigned driver contact details, pickup/drop station stops, and seat utilization counters.

7. πŸ“ Examination & Grading System (/home/examination-management) - βœ… Implemented

  • Term Schedules: Mid-Term, Final, and Unit Test scheduling with target classes and max/passing mark criteria.
  • Automatic Grading: Student marks recording with automatic percentage and grade calculation (A+, A, B, C, D, F).

8. πŸ“… Daily Attendance & Leave Management (/home/attendance-management) - βœ… Implemented

  • Daily Logs: Timestamped check-in and check-out logs for staff and students.
  • Leave Application Workflows: Interactive leave approval/rejection modal with approver remarks for Casual, Sick, and Maternity leaves.

9. πŸ“’ Notice Board & Event Circulars (/home/events-notices) - βœ… Implemented

  • Institutional Feed: Publish PTM announcements, holiday notices, and sports circulars with priority badges (High, Medium, Normal).

10. πŸ“ˆ Executive Reports & Analytics Dashboard (/home/reports-analytics) - βœ… Implemented

  • Institutional KPIs: Real-time demographic counters, financial collection summaries, library book circulation, and fleet active route metrics.

πŸ” Multi-Tenant Role-Based Access Control (RBAC)

The security model allows each school tenant to independently customize role permissions:

AppTenants (Tenant Root)
   β–²              β–²
   β”‚              β”‚
AppUsers      AppRoles
                  β–²
                  β”‚
          AppRolePermissions (Tenant-Scoped Mappings)
                  β–²
                  β”‚
            AppPermissions (Dynamic Action Tokens)
  • Dynamic Access: New system permissions can be registered without altering database schemas.
  • Tenant Isolation: An Admin role in Tenant A can have entirely different fine-grained permissions than an Admin in Tenant B.

πŸš€ Getting Started

Prerequisites

  • .NET SDK: version 8.0 or later
  • Node.js: version 18.x or later
  • Angular CLI: version 20.x (npm install -g @angular/cli)
  • Database: Microsoft SQL Server (or SQL Server Express / Docker container)

1️⃣ Running the C# Backend API

  1. Navigate to the API presentation folder:
    cd TSWD.EducationManagement/TSWD.EducationManagement
  2. Restore .NET dependencies:
    dotnet restore
  3. Update database connection strings in appsettings.json / appsettings.Development.json.
  4. Run EF Core Database Migrations / Scaffolding (if needed):
    dotnet ef database update --project ../TSWD.EducationManagement.EntityFrameworkCore
  5. Start the backend server:
    dotnet run
    The API server will launch with Swagger documentation enabled in development mode.

2️⃣ Running the Angular 20 Frontend UI

  1. Navigate to the frontend directory:
    cd TSWD.EducationManagement.UI
  2. Install NPM dependencies:
    npm install
  3. Start the Angular local development server:
    npm start
    (or run ng serve)
  4. Open your browser and navigate to:
    http://localhost:4200/
    
    The app will automatically reload whenever you modify any source files.

πŸ› οΈ Database Scaffolding Reference

For developers updating Entity Framework Core models directly from an existing database schema:

# Scaffolding command for SQL Server
Scaffold-DbContext "Server=YOUR_SERVER;Database=EducationDb;Trusted_Connection=True;TrustServerCertificate=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Entities -Context EducationDbContext -Project TSWD.EducationManagement.EntityFrameworkCore -StartupProject TSWD.EducationManagement

About

TSWD Education Management is a comprehensive, multi-tenant SaaS platform designed to streamline school operations, academic administration, fee management, and communication. Every school operates as an independent tenant with custom configurations, academic sessions, departments, staff hierarchies, and role-based permissions.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages