# abcxyzawe/baitaplonpy architecture

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

- Interactive diagram: https://gitdiagram.com/abcxyzawe/baitaplonpy
- Repository: https://github.com/abcxyzawe/baitaplonpy

## Overview

EAUT is a course-registration and training-center management application for students, teachers, employees, and administrators. Its main workflow is a PyQt desktop user making requests through an HTTP client to a FastAPI backend, which exposes role- and domain-specific operations backed by PostgreSQL. The product also covers course and curriculum management, registration and payment, schedules, attendance, assessment, dashboards, notifications, and class videos. Several feature modules are represented by their tree paths; their internal call wiring was not sampled.

Main entry points: [`backend/api/main.py`](https://github.com/abcxyzawe/baitaplonpy/blob/main/backend/api/main.py) (FastAPI application), [`backend/api/routers/auth.py`](https://github.com/abcxyzawe/baitaplonpy/blob/main/backend/api/routers/auth.py) (Authentication routes), [`backend/services/auth_service.py`](https://github.com/abcxyzawe/baitaplonpy/blob/main/backend/services/auth_service.py) (Login and passwords), [`frontend/main.py`](https://github.com/abcxyzawe/baitaplonpy/blob/main/frontend/main.py) (PyQt application)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Desktop client"]
  node_desktop["PyQt application<br/>[main.py]"]
  node_httpclient["HTTP client<br/>[api_client.py]"]
end

subgraph group_api["REST API"]
  node_server["FastAPI application<br/>[main.py]"]
  node_authroute["Authentication routes<br/>[auth.py]"]
  node_other_routes["Domain routes"]
end

subgraph group_domains["Academic operations"]
  node_auth["Login and passwords<br/>[auth_service.py]"]
  node_usersvc["User management<br/>[user_service.py]"]
  node_coursesvc["Courses and curriculum<br/>[course_service.py]"]
  node_registrationsvc["Registration and payment"]
  node_schedulesvc["Class schedules"]
  node_attendancesvc["Attendance"]
  node_assessment["Assessment and grading"]
  node_insights["Statistics dashboards<br/>[stats_service.py]"]
  node_notifications["Notifications and email"]
  node_videos["Class videos<br/>[video_service.py]"]
  node_audit["Audit logging<br/>[audit_service.py]"]
end

subgraph group_storage["Persistence"]
  node_dbaccess["Database access<br/>[db.py]"]
  node_postgres[("PostgreSQL")]
end

node_users(("Students, staff"))

node_users -->|"use"| node_desktop
node_desktop -->|"request"| node_httpclient
node_httpclient -->|"HTTP calls"| node_server
node_server -->|"dispatch"| node_authroute
node_server -->|"dispatch"| node_other_routes
node_authroute -->|"authenticate"| node_auth
node_authroute -->|"record events"| node_audit
node_auth -->|"query and update"| node_dbaccess
node_auth -->|"verify credentials"| node_users
node_dbaccess -->|"read and write"| node_postgres

click node_desktop "https://github.com/abcxyzawe/baitaplonpy/blob/main/frontend/main.py"
click node_httpclient "https://github.com/abcxyzawe/baitaplonpy/blob/main/frontend/api_client.py"
click node_server "https://github.com/abcxyzawe/baitaplonpy/blob/main/backend/api/main.py"
click node_authroute "https://github.com/abcxyzawe/baitaplonpy/blob/main/backend/api/routers/auth.py"
click node_other_routes "https://github.com/abcxyzawe/baitaplonpy/tree/main/backend/api/routers"
click node_auth "https://github.com/abcxyzawe/baitaplonpy/blob/main/backend/services/auth_service.py"
click node_usersvc "https://github.com/abcxyzawe/baitaplonpy/blob/main/backend/services/user_service.py"
click node_coursesvc "https://github.com/abcxyzawe/baitaplonpy/blob/main/backend/services/course_service.py"
click node_registrationsvc "https://github.com/abcxyzawe/baitaplonpy/blob/main/backend/services/registration_service.py"
click node_schedulesvc "https://github.com/abcxyzawe/baitaplonpy/blob/main/backend/services/schedule_service.py"
click node_attendancesvc "https://github.com/abcxyzawe/baitaplonpy/blob/main/backend/services/attendance_service.py"
click node_assessment "https://github.com/abcxyzawe/baitaplonpy/tree/main/backend/services"
click node_insights "https://github.com/abcxyzawe/baitaplonpy/blob/main/backend/services/stats_service.py"
click node_notifications "https://github.com/abcxyzawe/baitaplonpy/blob/main/backend/services/notification_service.py"
click node_videos "https://github.com/abcxyzawe/baitaplonpy/blob/main/backend/services/video_service.py"
click node_audit "https://github.com/abcxyzawe/baitaplonpy/blob/main/backend/services/audit_service.py"
click node_dbaccess "https://github.com/abcxyzawe/baitaplonpy/blob/main/backend/database/db.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_desktop,node_httpclient toneBlue
class node_server,node_authroute,node_other_routes toneAmber
class node_auth,node_usersvc,node_coursesvc,node_registrationsvc,node_schedulesvc,node_attendancesvc,node_assessment,node_insights,node_notifications,node_videos,node_audit toneMint
class node_dbaccess,node_postgres toneRose
class node_users toneIndigo
```

## Components

### Desktop client

- [PyQt application](https://github.com/abcxyzawe/baitaplonpy/blob/main/frontend/main.py): `frontend/main.py`
- [HTTP client](https://github.com/abcxyzawe/baitaplonpy/blob/main/frontend/api_client.py): `frontend/api_client.py`

### REST API

- [FastAPI application](https://github.com/abcxyzawe/baitaplonpy/blob/main/backend/api/main.py): `backend/api/main.py`
- [Authentication routes](https://github.com/abcxyzawe/baitaplonpy/blob/main/backend/api/routers/auth.py): `backend/api/routers/auth.py`
- [Domain routes](https://github.com/abcxyzawe/baitaplonpy/tree/main/backend/api/routers): `backend/api/routers`

### Academic operations

- [Login and passwords](https://github.com/abcxyzawe/baitaplonpy/blob/main/backend/services/auth_service.py): `backend/services/auth_service.py`
- [User management](https://github.com/abcxyzawe/baitaplonpy/blob/main/backend/services/user_service.py): `backend/services/user_service.py`
- [Courses and curriculum](https://github.com/abcxyzawe/baitaplonpy/blob/main/backend/services/course_service.py): `backend/services/course_service.py`
- [Registration and payment](https://github.com/abcxyzawe/baitaplonpy/blob/main/backend/services/registration_service.py): `backend/services/registration_service.py`
- [Class schedules](https://github.com/abcxyzawe/baitaplonpy/blob/main/backend/services/schedule_service.py): `backend/services/schedule_service.py`
- [Attendance](https://github.com/abcxyzawe/baitaplonpy/blob/main/backend/services/attendance_service.py): `backend/services/attendance_service.py`
- [Assessment and grading](https://github.com/abcxyzawe/baitaplonpy/tree/main/backend/services): `backend/services`
- [Statistics dashboards](https://github.com/abcxyzawe/baitaplonpy/blob/main/backend/services/stats_service.py): `backend/services/stats_service.py`
- [Notifications and email](https://github.com/abcxyzawe/baitaplonpy/blob/main/backend/services/notification_service.py): `backend/services/notification_service.py`
- [Class videos](https://github.com/abcxyzawe/baitaplonpy/blob/main/backend/services/video_service.py): `backend/services/video_service.py`
- [Audit logging](https://github.com/abcxyzawe/baitaplonpy/blob/main/backend/services/audit_service.py): `backend/services/audit_service.py`

### Persistence

- [Database access](https://github.com/abcxyzawe/baitaplonpy/blob/main/backend/database/db.py): `backend/database/db.py`
- **PostgreSQL**

### Other components

- **Students, staff**

## Connections

- Students, staff → PyQt application: use
- PyQt application → HTTP client: request
- HTTP client → FastAPI application: HTTP calls
- FastAPI application → Authentication routes: dispatch
- FastAPI application → Domain routes: dispatch
- Authentication routes → Login and passwords: authenticate
- Authentication routes → Audit logging: record events
- Login and passwords → Database access: query and update
- Login and passwords → Students, staff: verify credentials
- Database access → PostgreSQL: read and write
