# nicholohq/django-enrollment-system architecture

> Architecture diagram of the GitHub repository nicholohq/django-enrollment-system, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-14). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/nicholohq/django-enrollment-system
- Repository: https://github.com/nicholohq/django-enrollment-system

## Overview

ADS Enrollment System is a Django college enrollment application. Its main workflow is Registrar management of academic data, people and sections, followed by creating and confirming student enrollments; students can then view their own records. Authentication and role checks govern access, while finance is a data-and-service layer without cashier screens. The README documents the product capabilities; the edges below rely on those statements or the supplied source index, so unsampled wiring is not assumed.

Main entry points: [`accounts/report_views.py`](https://github.com/nicholohq/django-enrollment-system/blob/main/accounts/report_views.py) (Operational reports), [`enrollment/services.py`](https://github.com/nicholohq/django-enrollment-system/blob/main/enrollment/services.py) (Enrollment workflow rules), [`enrollment/views.py`](https://github.com/nicholohq/django-enrollment-system/blob/main/enrollment/views.py) (Enrollment portal), [`academics/models.py`](https://github.com/nicholohq/django-enrollment-system/blob/main/academics/models.py) (Academic master data)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_access["Access and people"]
  node_auth["Authentication<br/>[views.py]"]
  node_roles["Role authorization<br/>[permissions.py]"]
  node_profiles["People profiles<br/>[services.py]"]
end

subgraph group_academics["Academic data"]
  node_academic_data[("Academic master data<br/>[models.py]")]
  node_academic_screens["Academic management<br/>[views.py]"]
end

subgraph group_operations["Enrollment operations"]
  node_sections[("Sections and schedules<br/>[models.py]")]
  node_schedule_rules["Schedule rules<br/>[services.py]"]
  node_enrollments[("Enrollment records<br/>[models.py]")]
  node_enrollment_rules["Enrollment workflow rules<br/>[services.py]"]
  node_enrollment_portal["Enrollment portal<br/>[views.py]"]
end

subgraph group_finance["Finance"]
  node_finance_data[("Assessments and payments<br/>[models.py]")]
  node_finance_services["Finance calculations<br/>[services.py]"]
end

subgraph group_insight["Reporting"]
  node_reports["Operational reports<br/>[report_views.py]"]
end

node_registrar(("Registrar"))
node_student_actor(("Student"))
node_mysql[("MySQL database")]

node_registrar -->|"signs in"| node_auth
node_auth -->|"routes by role"| node_roles
node_registrar -->|"manages records"| node_academic_screens
node_academic_screens -->|"reads and updates"| node_academic_data
node_registrar -->|"manages people"| node_profiles
node_registrar -->|"manages sections"| node_schedule_rules
node_schedule_rules -->|"validates and saves"| node_sections
node_registrar -->|"manages enrollment"| node_enrollment_portal
node_enrollment_portal -->|"invokes"| node_enrollment_rules
node_enrollment_rules -->|"creates and changes"| node_enrollments
node_enrollment_rules -->|"checks eligibility"| node_sections
node_enrollment_rules -->|"checks prerequisites"| node_academic_data
node_student_actor -->|"views own records"| node_enrollment_portal
node_enrollment_portal -->|"uses finance helpers"| node_finance_services
node_finance_services -->|"calculates and records"| node_finance_data
node_reports -->|"queries"| node_academic_data
node_reports -->|"queries"| node_enrollments
node_reports -->|"queries"| node_sections
node_reports -->|"uses balance logic"| node_finance_services
node_academic_data -.->|"stored in"| node_mysql
node_sections -.->|"stored in"| node_mysql
node_enrollments -.->|"stored in"| node_mysql
node_finance_data -.->|"stored in"| node_mysql

click node_auth "https://github.com/nicholohq/django-enrollment-system/blob/main/accounts/views.py"
click node_roles "https://github.com/nicholohq/django-enrollment-system/blob/main/accounts/permissions.py"
click node_profiles "https://github.com/nicholohq/django-enrollment-system/blob/main/accounts/services.py"
click node_academic_data "https://github.com/nicholohq/django-enrollment-system/blob/main/academics/models.py"
click node_academic_screens "https://github.com/nicholohq/django-enrollment-system/blob/main/academics/views.py"
click node_sections "https://github.com/nicholohq/django-enrollment-system/blob/main/scheduling/models.py"
click node_schedule_rules "https://github.com/nicholohq/django-enrollment-system/blob/main/scheduling/services.py"
click node_enrollments "https://github.com/nicholohq/django-enrollment-system/blob/main/enrollment/models.py"
click node_enrollment_rules "https://github.com/nicholohq/django-enrollment-system/blob/main/enrollment/services.py"
click node_enrollment_portal "https://github.com/nicholohq/django-enrollment-system/blob/main/enrollment/views.py"
click node_finance_data "https://github.com/nicholohq/django-enrollment-system/blob/main/finance/models.py"
click node_finance_services "https://github.com/nicholohq/django-enrollment-system/blob/main/finance/services.py"
click node_reports "https://github.com/nicholohq/django-enrollment-system/blob/main/accounts/report_views.py"

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_auth,node_roles,node_profiles toneBlue
class node_academic_data,node_academic_screens,node_mysql toneAmber
class node_sections,node_schedule_rules,node_enrollments,node_enrollment_rules,node_enrollment_portal toneMint
class node_finance_data,node_finance_services toneRose
class node_reports,node_registrar,node_student_actor toneIndigo
```

## Components

### Access and people

- [Authentication](https://github.com/nicholohq/django-enrollment-system/blob/main/accounts/views.py): `accounts/views.py`
- [Role authorization](https://github.com/nicholohq/django-enrollment-system/blob/main/accounts/permissions.py): `accounts/permissions.py`
- [People profiles](https://github.com/nicholohq/django-enrollment-system/blob/main/accounts/services.py): `accounts/services.py`

### Academic data

- [Academic master data](https://github.com/nicholohq/django-enrollment-system/blob/main/academics/models.py): `academics/models.py`
- [Academic management](https://github.com/nicholohq/django-enrollment-system/blob/main/academics/views.py): `academics/views.py`

### Enrollment operations

- [Sections and schedules](https://github.com/nicholohq/django-enrollment-system/blob/main/scheduling/models.py): `scheduling/models.py`
- [Schedule rules](https://github.com/nicholohq/django-enrollment-system/blob/main/scheduling/services.py): `scheduling/services.py`
- [Enrollment records](https://github.com/nicholohq/django-enrollment-system/blob/main/enrollment/models.py): `enrollment/models.py`
- [Enrollment workflow rules](https://github.com/nicholohq/django-enrollment-system/blob/main/enrollment/services.py): `enrollment/services.py`
- [Enrollment portal](https://github.com/nicholohq/django-enrollment-system/blob/main/enrollment/views.py): `enrollment/views.py`

### Finance

- [Assessments and payments](https://github.com/nicholohq/django-enrollment-system/blob/main/finance/models.py): `finance/models.py`
- [Finance calculations](https://github.com/nicholohq/django-enrollment-system/blob/main/finance/services.py): `finance/services.py`

### Reporting

- [Operational reports](https://github.com/nicholohq/django-enrollment-system/blob/main/accounts/report_views.py): `accounts/report_views.py`

### Other components

- **Registrar**
- **Student**
- **MySQL database**

## Connections

- Registrar → Authentication: signs in (evidence: `README.md`)
- Authentication → Role authorization: routes by role (evidence: `README.md`)
- Registrar → Academic management: manages records (evidence: `README.md`)
- Academic management → Academic master data: reads and updates (evidence: `academics/views.py`)
- Registrar → People profiles: manages people (evidence: `README.md`)
- Registrar → Schedule rules: manages sections (evidence: `README.md`)
- Schedule rules → Sections and schedules: validates and saves (evidence: `scheduling/services.py`)
- Registrar → Enrollment portal: manages enrollment (evidence: `README.md`)
- Enrollment portal → Enrollment workflow rules: invokes (evidence: `enrollment/views.py`)
- Enrollment workflow rules → Enrollment records: creates and changes (evidence: `enrollment/services.py`)
- Enrollment workflow rules → Sections and schedules: checks eligibility (evidence: `enrollment/services.py`)
- Enrollment workflow rules → Academic master data: checks prerequisites (evidence: `enrollment/services.py`)
- Student → Enrollment portal: views own records (evidence: `README.md`)
- Enrollment portal → Finance calculations: uses finance helpers (evidence: `enrollment/views.py`)
- Finance calculations → Assessments and payments: calculates and records (evidence: `finance/services.py`)
- Operational reports → Academic master data: queries (evidence: `accounts/report_views.py`)
- Operational reports → Enrollment records: queries (evidence: `accounts/report_views.py`)
- Operational reports → Sections and schedules: queries (evidence: `accounts/report_views.py`)
- Operational reports → Finance calculations: uses balance logic (evidence: `accounts/report_views.py`)
- Academic master data → MySQL database: stored in
- Sections and schedules → MySQL database: stored in
- Enrollment records → MySQL database: stored in
- Assessments and payments → MySQL database: stored in
