# devinvortex/swa-nexusenroll architecture

> Architecture diagram of the GitHub repository devinvortex/swa-nexusenroll, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-26). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/devinvortex/swa-nexusenroll
- Repository: https://github.com/devinvortex/swa-nexusenroll

## Overview

NexusEnroll is a .NET university course-enrollment system presented as a modular monolith with in-memory, database-per-service-style repositories. Its main workflow accepts a student enrollment request, resolves the student and course through the facade, applies capacity, prerequisite, and schedule rules, updates enrollment state, and publishes an event. The README also describes faculty grading, administrator overrides and capacity reporting, and student schedule/progress features. API wiring is only partially excerpted; omitted links reflect that evidence limit rather than an assertion that these features are disconnected.

Main entry points: [`NexusEnroll2/NexusEnroll.Api/Program.cs`](https://github.com/devinvortex/swa-nexusenroll/blob/main/NexusEnroll2/NexusEnroll.Api/Program.cs) (Minimal API), [`NexusEnroll2/NexusEnroll.Core/Patterns/Facade/EnrollmentFacade.cs`](https://github.com/devinvortex/swa-nexusenroll/blob/main/NexusEnroll2/NexusEnroll.Core/Patterns/Facade/EnrollmentFacade.cs) (Enrollment Facade), [`NexusEnroll2/NexusEnroll.Core/Services/EnrollmentService.cs`](https://github.com/devinvortex/swa-nexusenroll/blob/main/NexusEnroll2/NexusEnroll.Core/Services/EnrollmentService.cs) (Enrollment Service), [`NexusEnroll2/NexusEnroll.Core/Patterns/Observer/EnrollmentEventPublisher.cs`](https://github.com/devinvortex/swa-nexusenroll/blob/main/NexusEnroll2/NexusEnroll.Core/Patterns/Observer/EnrollmentEventPublisher.cs) (Enrollment Event Bus)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["API and Facade"]
  node_api["Minimal API<br/>[Program.cs]"]
  node_facade["Enrollment Facade"]
end

subgraph group_domain["Enrollment Domain"]
  node_students[("Student Repository")]
  node_courses[("Course Repository")]
  node_admins[("Admin Repository")]
  node_enrollment["Enrollment Service"]
  node_rules["Validation Rules<br/>[Strategy]"]
  node_models["Enrollment Models<br/>[Enrollment.cs]"]
end

subgraph group_portals["Portal Capabilities"]
  node_student_service["Student Services<br/>[StudentService.cs]"]
  node_catalogue_service["Catalogue Service"]
  node_faculty_service["Faculty Services<br/>[FacultyService.cs]"]
  node_grade_workflow["Grade Lifecycle<br/>[State]"]
  node_admin_service["Admin Services<br/>[AdminService.cs]"]
  node_reporting["Reporting Service"]
end

subgraph group_events["Events and Notifications"]
  node_publisher["Enrollment Event Bus"]
  node_observers["Advisor and Waitlist<br/>[Observer]"]
  node_notification_factory["Notification Factory"]
end

node_student_actor(("Student"))
node_faculty_actor(("Faculty"))
node_admin_actor(("Administrator"))

node_student_actor -->|"requests enrollment"| node_api
node_faculty_actor -->|"submits grades"| node_api
node_admin_actor -->|"requests override"| node_api
node_api -->|"delegates enrollment"| node_facade
node_api -->|"looks up student"| node_students
node_api -->|"looks up course"| node_courses
node_api -->|"looks up admin"| node_admins
node_api -->|"manages grades"| node_grade_workflow
node_api -.->|"requests reports"| node_reporting
node_facade -->|"loads student"| node_students
node_facade -->|"loads courses"| node_courses
node_facade -->|"loads administrator"| node_admins
node_facade -->|"processes enrollment"| node_enrollment
node_enrollment -->|"validates enrollment"| node_rules
node_enrollment -->|"publishes changes"| node_publisher
node_publisher -->|"dispatches events"| node_observers

click node_api "https://github.com/devinvortex/swa-nexusenroll/blob/main/NexusEnroll2/NexusEnroll.Api/Program.cs"
click node_facade "https://github.com/devinvortex/swa-nexusenroll/blob/main/NexusEnroll2/NexusEnroll.Core/Patterns/Facade/EnrollmentFacade.cs"
click node_students "https://github.com/devinvortex/swa-nexusenroll/blob/main/NexusEnroll2/NexusEnroll.Core/Data/Student/InMemoryStudentRepository.cs"
click node_courses "https://github.com/devinvortex/swa-nexusenroll/blob/main/NexusEnroll2/NexusEnroll.Core/Data/Catalogue/InMemoryCourseRepository.cs"
click node_admins "https://github.com/devinvortex/swa-nexusenroll/blob/main/NexusEnroll2/NexusEnroll.Core/Data/Admin/InMemoryAdminRepository.cs"
click node_enrollment "https://github.com/devinvortex/swa-nexusenroll/blob/main/NexusEnroll2/NexusEnroll.Core/Services/EnrollmentService.cs"
click node_rules "https://github.com/devinvortex/swa-nexusenroll/tree/main/NexusEnroll2/NexusEnroll.Core/Patterns/Strategy"
click node_models "https://github.com/devinvortex/swa-nexusenroll/blob/main/NexusEnroll2/NexusEnroll.Core/Entities/Enrollment.cs"
click node_student_service "https://github.com/devinvortex/swa-nexusenroll/blob/main/NexusEnroll2/NexusEnroll.Core/Services/StudentService.cs"
click node_catalogue_service "https://github.com/devinvortex/swa-nexusenroll/blob/main/NexusEnroll2/NexusEnroll.Core/Services/CatalogueService.cs"
click node_faculty_service "https://github.com/devinvortex/swa-nexusenroll/blob/main/NexusEnroll2/NexusEnroll.Core/Services/FacultyService.cs"
click node_grade_workflow "https://github.com/devinvortex/swa-nexusenroll/tree/main/NexusEnroll2/NexusEnroll.Core/Patterns/State"
click node_admin_service "https://github.com/devinvortex/swa-nexusenroll/blob/main/NexusEnroll2/NexusEnroll.Core/Services/AdminService.cs"
click node_reporting "https://github.com/devinvortex/swa-nexusenroll/blob/main/NexusEnroll2/NexusEnroll.Core/Services/ReportingService.cs"
click node_publisher "https://github.com/devinvortex/swa-nexusenroll/blob/main/NexusEnroll2/NexusEnroll.Core/Patterns/Observer/EnrollmentEventPublisher.cs"
click node_observers "https://github.com/devinvortex/swa-nexusenroll/tree/main/NexusEnroll2/NexusEnroll.Core/Patterns/Observer"
click node_notification_factory "https://github.com/devinvortex/swa-nexusenroll/blob/main/NexusEnroll2/NexusEnroll.Core/Patterns/Factory/NotificationFactory.cs"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_api,node_facade toneBlue
class node_students,node_courses,node_admins,node_enrollment,node_rules,node_models toneAmber
class node_student_service,node_catalogue_service,node_faculty_service,node_grade_workflow,node_admin_service,node_reporting toneMint
class node_publisher,node_observers,node_notification_factory toneRose
class node_student_actor,node_faculty_actor,node_admin_actor toneIndigo
```

## Components

### API and Facade

- [Minimal API](https://github.com/devinvortex/swa-nexusenroll/blob/main/NexusEnroll2/NexusEnroll.Api/Program.cs): `NexusEnroll2/NexusEnroll.Api/Program.cs`
- [Enrollment Facade](https://github.com/devinvortex/swa-nexusenroll/blob/main/NexusEnroll2/NexusEnroll.Core/Patterns/Facade/EnrollmentFacade.cs): `NexusEnroll2/NexusEnroll.Core/Patterns/Facade/EnrollmentFacade.cs`

### Enrollment Domain

- [Student Repository](https://github.com/devinvortex/swa-nexusenroll/blob/main/NexusEnroll2/NexusEnroll.Core/Data/Student/InMemoryStudentRepository.cs): `NexusEnroll2/NexusEnroll.Core/Data/Student/InMemoryStudentRepository.cs`
- [Course Repository](https://github.com/devinvortex/swa-nexusenroll/blob/main/NexusEnroll2/NexusEnroll.Core/Data/Catalogue/InMemoryCourseRepository.cs): `NexusEnroll2/NexusEnroll.Core/Data/Catalogue/InMemoryCourseRepository.cs`
- [Admin Repository](https://github.com/devinvortex/swa-nexusenroll/blob/main/NexusEnroll2/NexusEnroll.Core/Data/Admin/InMemoryAdminRepository.cs): `NexusEnroll2/NexusEnroll.Core/Data/Admin/InMemoryAdminRepository.cs`
- [Enrollment Service](https://github.com/devinvortex/swa-nexusenroll/blob/main/NexusEnroll2/NexusEnroll.Core/Services/EnrollmentService.cs): `NexusEnroll2/NexusEnroll.Core/Services/EnrollmentService.cs`
- [Validation Rules](https://github.com/devinvortex/swa-nexusenroll/tree/main/NexusEnroll2/NexusEnroll.Core/Patterns/Strategy): `NexusEnroll2/NexusEnroll.Core/Patterns/Strategy`
- [Enrollment Models](https://github.com/devinvortex/swa-nexusenroll/blob/main/NexusEnroll2/NexusEnroll.Core/Entities/Enrollment.cs): `NexusEnroll2/NexusEnroll.Core/Entities/Enrollment.cs`

### Portal Capabilities

- [Student Services](https://github.com/devinvortex/swa-nexusenroll/blob/main/NexusEnroll2/NexusEnroll.Core/Services/StudentService.cs): `NexusEnroll2/NexusEnroll.Core/Services/StudentService.cs`
- [Catalogue Service](https://github.com/devinvortex/swa-nexusenroll/blob/main/NexusEnroll2/NexusEnroll.Core/Services/CatalogueService.cs): `NexusEnroll2/NexusEnroll.Core/Services/CatalogueService.cs`
- [Faculty Services](https://github.com/devinvortex/swa-nexusenroll/blob/main/NexusEnroll2/NexusEnroll.Core/Services/FacultyService.cs): `NexusEnroll2/NexusEnroll.Core/Services/FacultyService.cs`
- [Grade Lifecycle](https://github.com/devinvortex/swa-nexusenroll/tree/main/NexusEnroll2/NexusEnroll.Core/Patterns/State): `NexusEnroll2/NexusEnroll.Core/Patterns/State`
- [Admin Services](https://github.com/devinvortex/swa-nexusenroll/blob/main/NexusEnroll2/NexusEnroll.Core/Services/AdminService.cs): `NexusEnroll2/NexusEnroll.Core/Services/AdminService.cs`
- [Reporting Service](https://github.com/devinvortex/swa-nexusenroll/blob/main/NexusEnroll2/NexusEnroll.Core/Services/ReportingService.cs): `NexusEnroll2/NexusEnroll.Core/Services/ReportingService.cs`

### Events and Notifications

- [Enrollment Event Bus](https://github.com/devinvortex/swa-nexusenroll/blob/main/NexusEnroll2/NexusEnroll.Core/Patterns/Observer/EnrollmentEventPublisher.cs): `NexusEnroll2/NexusEnroll.Core/Patterns/Observer/EnrollmentEventPublisher.cs`
- [Advisor and Waitlist](https://github.com/devinvortex/swa-nexusenroll/tree/main/NexusEnroll2/NexusEnroll.Core/Patterns/Observer): `NexusEnroll2/NexusEnroll.Core/Patterns/Observer`
- [Notification Factory](https://github.com/devinvortex/swa-nexusenroll/blob/main/NexusEnroll2/NexusEnroll.Core/Patterns/Factory/NotificationFactory.cs): `NexusEnroll2/NexusEnroll.Core/Patterns/Factory/NotificationFactory.cs`

### Other components

- **Student**
- **Faculty**
- **Administrator**

## Connections

- Student → Minimal API: requests enrollment
- Faculty → Minimal API: submits grades
- Administrator → Minimal API: requests override
- Minimal API → Enrollment Facade: delegates enrollment
- Minimal API → Student Repository: looks up student
- Minimal API → Course Repository: looks up course
- Minimal API → Admin Repository: looks up admin
- Minimal API → Grade Lifecycle: manages grades
- Minimal API → Reporting Service: requests reports
- Enrollment Facade → Student Repository: loads student
- Enrollment Facade → Course Repository: loads courses
- Enrollment Facade → Admin Repository: loads administrator
- Enrollment Facade → Enrollment Service: processes enrollment
- Enrollment Service → Validation Rules: validates enrollment
- Enrollment Service → Enrollment Event Bus: publishes changes
- Enrollment Event Bus → Advisor and Waitlist: dispatches events
