# kathir-23/erp-attandance architecture

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

- Interactive diagram: https://gitdiagram.com/kathir-23/erp-attandance
- Repository: https://github.com/kathir-23/erp-attandance

## Overview

This is a server-rendered college ERP: users sign in, then role-specific Flask routes manage records or present course, attendance, grade, report, and announcement views. The README documents all three role workflows, while the sampled app.py excerpts confirm session-based role checks, JSON-backed records, and several admin, staff, and student operations. Edges are limited to relationships explicit in those excerpts or README; unsampled route details are not inferred.

Main entry points: [`seed_data.py`](https://github.com/kathir-23/erp-attandance/blob/main/seed_data.py) (Sample data seeder), [`app.py`](https://github.com/kathir-23/erp-attandance/blob/main/app.py) (Admin management), [`data/students.json`](https://github.com/kathir-23/erp-attandance/blob/main/data/students.json) (Student records), [`data/courses.json`](https://github.com/kathir-23/erp-attandance/blob/main/data/courses.json) (Course records)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Web application"]
  node_flask["Flask routes<br/>[app.py]"]
  node_login["Login and roles<br/>[app.py]"]
  node_templates["Role pages"]
end

subgraph group_admin["Administration"]
  node_adminops["Admin management<br/>[app.py]"]
  node_reports["Reports<br/>[app.py]"]
  node_announcements["Announcements<br/>[app.py]"]
end

subgraph group_academics["Academic workflows"]
  node_staffops["Staff tools<br/>[app.py]"]
  node_studentops["Student portal<br/>[app.py]"]
end

subgraph group_records["JSON records"]
  node_users[("User accounts<br/>[users.json]")]
  node_students[("Student records<br/>[students.json]")]
  node_staff[("Staff records<br/>[staff.json]")]
  node_courses[("Course records<br/>[courses.json]")]
  node_attendance[("Attendance records<br/>[attendance.json]")]
  node_grades[("Grade records<br/>[grades.json]")]
  node_notices[("Announcement records<br/>[announcements.json]")]
  node_seed["Sample data seeder<br/>[seed_data.py]"]
end

node_user(("College user"))

node_user -->|"uses"| node_flask
node_flask -->|"routes login"| node_login
node_login -.->|"checks accounts"| node_users
node_flask -->|"renders pages"| node_templates
node_flask -->|"dispatches admin"| node_adminops
node_flask -->|"dispatches staff"| node_staffops
node_flask -->|"dispatches student"| node_studentops
node_adminops -->|"reads and writes"| node_students
node_adminops -->|"reads and writes"| node_staff
node_adminops -->|"reads and writes"| node_courses
node_adminops -->|"updates accounts"| node_users
node_adminops -->|"builds reports"| node_reports
node_adminops -->|"posts notices"| node_announcements
node_announcements -->|"saves notices"| node_notices
node_staffops -->|"checks assignments"| node_courses
node_staffops -->|"loads roster"| node_students
node_staffops -.->|"marks attendance"| node_attendance
node_staffops -->|"enters grades"| node_grades
node_studentops -->|"loads profile"| node_students
node_studentops -->|"shows enrollment"| node_courses
node_studentops -->|"checks attendance"| node_attendance
node_studentops -.->|"checks grades"| node_grades
node_studentops -.->|"views notices"| node_notices
node_seed -->|"writes samples"| node_users
node_seed -->|"writes samples"| node_students
node_seed -->|"writes samples"| node_staff
node_seed -->|"writes samples"| node_courses
node_seed -->|"writes samples"| node_attendance
node_seed -->|"writes samples"| node_grades
node_seed -->|"writes samples"| node_notices

click node_flask "https://github.com/kathir-23/erp-attandance/blob/main/app.py"
click node_login "https://github.com/kathir-23/erp-attandance/blob/main/app.py"
click node_adminops "https://github.com/kathir-23/erp-attandance/blob/main/app.py"
click node_reports "https://github.com/kathir-23/erp-attandance/blob/main/app.py"
click node_announcements "https://github.com/kathir-23/erp-attandance/blob/main/app.py"
click node_staffops "https://github.com/kathir-23/erp-attandance/blob/main/app.py"
click node_studentops "https://github.com/kathir-23/erp-attandance/blob/main/app.py"
click node_templates "https://github.com/kathir-23/erp-attandance/tree/main/templates"
click node_users "https://github.com/kathir-23/erp-attandance/blob/main/data/users.json"
click node_students "https://github.com/kathir-23/erp-attandance/blob/main/data/students.json"
click node_staff "https://github.com/kathir-23/erp-attandance/blob/main/data/staff.json"
click node_courses "https://github.com/kathir-23/erp-attandance/blob/main/data/courses.json"
click node_attendance "https://github.com/kathir-23/erp-attandance/blob/main/data/attendance.json"
click node_grades "https://github.com/kathir-23/erp-attandance/blob/main/data/grades.json"
click node_notices "https://github.com/kathir-23/erp-attandance/blob/main/data/announcements.json"
click node_seed "https://github.com/kathir-23/erp-attandance/blob/main/seed_data.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_flask,node_login,node_templates,node_user toneBlue
class node_adminops,node_reports,node_announcements toneAmber
class node_staffops,node_studentops toneMint
class node_users,node_students,node_staff,node_courses,node_attendance,node_grades,node_notices,node_seed toneRose
```

## Components

### Web application

- [Flask routes](https://github.com/kathir-23/erp-attandance/blob/main/app.py): `app.py`
- [Login and roles](https://github.com/kathir-23/erp-attandance/blob/main/app.py): `app.py`
- [Role pages](https://github.com/kathir-23/erp-attandance/tree/main/templates): `templates`

### Administration

- [Admin management](https://github.com/kathir-23/erp-attandance/blob/main/app.py): `app.py`
- [Reports](https://github.com/kathir-23/erp-attandance/blob/main/app.py): `app.py`
- [Announcements](https://github.com/kathir-23/erp-attandance/blob/main/app.py): `app.py`

### Academic workflows

- [Staff tools](https://github.com/kathir-23/erp-attandance/blob/main/app.py): `app.py`
- [Student portal](https://github.com/kathir-23/erp-attandance/blob/main/app.py): `app.py`

### JSON records

- [User accounts](https://github.com/kathir-23/erp-attandance/blob/main/data/users.json): `data/users.json`
- [Student records](https://github.com/kathir-23/erp-attandance/blob/main/data/students.json): `data/students.json`
- [Staff records](https://github.com/kathir-23/erp-attandance/blob/main/data/staff.json): `data/staff.json`
- [Course records](https://github.com/kathir-23/erp-attandance/blob/main/data/courses.json): `data/courses.json`
- [Attendance records](https://github.com/kathir-23/erp-attandance/blob/main/data/attendance.json): `data/attendance.json`
- [Grade records](https://github.com/kathir-23/erp-attandance/blob/main/data/grades.json): `data/grades.json`
- [Announcement records](https://github.com/kathir-23/erp-attandance/blob/main/data/announcements.json): `data/announcements.json`
- [Sample data seeder](https://github.com/kathir-23/erp-attandance/blob/main/seed_data.py): `seed_data.py`

### Other components

- **College user**

## Connections

- College user → Flask routes: uses (evidence: `README.md`)
- Flask routes → Login and roles: routes login (evidence: `README.md`)
- Login and roles → User accounts: checks accounts
- Flask routes → Role pages: renders pages (evidence: `app.py`)
- Flask routes → Admin management: dispatches admin (evidence: `README.md`)
- Flask routes → Staff tools: dispatches staff (evidence: `README.md`)
- Flask routes → Student portal: dispatches student (evidence: `README.md`)
- Admin management → Student records: reads and writes (evidence: `app.py`)
- Admin management → Staff records: reads and writes (evidence: `app.py`)
- Admin management → Course records: reads and writes (evidence: `app.py`)
- Admin management → User accounts: updates accounts (evidence: `app.py`)
- Admin management → Reports: builds reports (evidence: `README.md`)
- Admin management → Announcements: posts notices (evidence: `app.py`)
- Announcements → Announcement records: saves notices (evidence: `app.py`)
- Staff tools → Course records: checks assignments (evidence: `app.py`)
- Staff tools → Student records: loads roster (evidence: `app.py`)
- Staff tools → Attendance records: marks attendance
- Staff tools → Grade records: enters grades (evidence: `README.md`)
- Student portal → Student records: loads profile (evidence: `app.py`)
- Student portal → Course records: shows enrollment (evidence: `app.py`)
- Student portal → Attendance records: checks attendance (evidence: `app.py`)
- Student portal → Grade records: checks grades
- Student portal → Announcement records: views notices
- Sample data seeder → User accounts: writes samples (evidence: `seed_data.py`)
- Sample data seeder → Student records: writes samples (evidence: `seed_data.py`)
- Sample data seeder → Staff records: writes samples (evidence: `seed_data.py`)
- Sample data seeder → Course records: writes samples (evidence: `seed_data.py`)
- Sample data seeder → Attendance records: writes samples (evidence: `seed_data.py`)
- Sample data seeder → Grade records: writes samples (evidence: `seed_data.py`)
- Sample data seeder → Announcement records: writes samples (evidence: `seed_data.py`)
