# is200406moil/schedule-service-backend architecture

> Architecture diagram of the GitHub repository is200406moil/schedule-service-backend, 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/is200406moil/schedule-service-backend
- Repository: https://github.com/is200406moil/schedule-service-backend
- Video tour (about a minute): https://gitdiagram.com/is200406moil/schedule-service-backend/video

## Overview

«Мой семестр» — веб-приложение для студентов, объединяющее групповое расписание и личные задачи с дедлайнами. Браузер обращается к FastAPI-приложению, которое обслуживает веб-страницы и API; пользователи и задачи хранятся в PostgreSQL, а расписание загружается через отдельный сервис. На графе показаны основные пользовательские потоки и слой сервисов/репозиториев. Часть маршрутов и клиент расписания не попали в предоставленные выдержки, поэтому связи для них ограничены документированными возможностями.

Main entry points: [`app/main.py`](https://github.com/is200406moil/schedule-service-backend/blob/master/app/main.py) (FastAPI-приложение), [`app/routers/ui/auth.py`](https://github.com/is200406moil/schedule-service-backend/blob/master/app/routers/ui/auth.py) (Веб-аутентификация), [`app/routers/ui/tasks.py`](https://github.com/is200406moil/schedule-service-backend/blob/master/app/routers/ui/tasks.py) (Веб-задачи), [`app/services/auth_service.py`](https://github.com/is200406moil/schedule-service-backend/blob/master/app/services/auth_service.py) (Аутентификация)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["Приложение и интерфейс"]
  node_main["FastAPI-приложение<br/>[main.py]"]
  node_ui_auth["Веб-аутентификация<br/>[auth.py]"]
  node_ui_tasks["Веб-задачи<br/>[tasks.py]"]
  node_templates["HTML-шаблоны<br/>[templates.py]"]
end

subgraph group_domain["Пользователи и задачи"]
  node_ui_profile["Профиль пользователя<br/>[profile.py]"]
  node_api_auth["Auth API<br/>[auth.py]"]
  node_api_tasks["Tasks API<br/>[tasks.py]"]
  node_auth_service["Аутентификация<br/>[auth_service.py]"]
  node_task_service["Управление задачами<br/>[task_service.py]"]
  node_user_service["Профиль пользователя<br/>[user_service.py]"]
end

subgraph group_schedule["Расписание и календарь"]
  node_ui_calendar["Календарь и обзор"]
  node_schedule_router["Schedule API<br/>[schedule.py]"]
  node_schedule_client["Клиент расписания<br/>[schedule.py]"]
end

subgraph group_storage["Данные"]
  node_user_repo["Репозиторий пользователей<br/>[user_repository.py]"]
  node_task_repo["Репозиторий задач<br/>[task_repository.py]"]
  node_database[("PostgreSQL<br/>[database.py]")]
end

node_browser(("Студент в браузере"))
node_schedule_service["Внешний сервис расписания"]

node_browser -->|"отправляет запросы"| node_main
node_main -->|"направляет запросы"| node_ui_auth
node_main -->|"направляет запросы"| node_ui_tasks
node_main -->|"направляет запросы"| node_ui_calendar
node_main -->|"направляет запросы"| node_ui_profile
node_main -->|"направляет запросы"| node_api_auth
node_main -->|"направляет запросы"| node_api_tasks
node_main -->|"направляет запросы"| node_schedule_router
node_ui_auth -->|"аутентифицирует и регистрирует"| node_auth_service
node_api_auth -->|"обрабатывает учётные записи"| node_auth_service
node_ui_tasks -->|"управляет задачами"| node_task_service
node_api_tasks -->|"управляет задачами"| node_task_service
node_ui_profile -->|"обновляет профиль"| node_user_service
node_ui_auth -->|"рендерит страницы"| node_templates
node_ui_tasks -->|"рендерит страницы"| node_templates
node_auth_service -->|"читает и создаёт"| node_user_repo
node_user_service -->|"обновляет"| node_user_repo
node_task_service -->|"читает и изменяет"| node_task_repo
node_user_repo -->|"читает и записывает"| node_database
node_task_repo -->|"читает и записывает"| node_database
node_schedule_router -->|"получает расписание"| node_schedule_client
node_schedule_client -->|"запрашивает расписание"| node_schedule_service

click node_main "https://github.com/is200406moil/schedule-service-backend/blob/master/app/main.py"
click node_ui_auth "https://github.com/is200406moil/schedule-service-backend/blob/master/app/routers/ui/auth.py"
click node_ui_tasks "https://github.com/is200406moil/schedule-service-backend/blob/master/app/routers/ui/tasks.py"
click node_ui_calendar "https://github.com/is200406moil/schedule-service-backend/tree/master/app/routers/ui"
click node_ui_profile "https://github.com/is200406moil/schedule-service-backend/blob/master/app/routers/ui/profile.py"
click node_api_auth "https://github.com/is200406moil/schedule-service-backend/blob/master/app/routers/auth.py"
click node_api_tasks "https://github.com/is200406moil/schedule-service-backend/blob/master/app/routers/tasks.py"
click node_schedule_router "https://github.com/is200406moil/schedule-service-backend/blob/master/app/routers/schedule.py"
click node_auth_service "https://github.com/is200406moil/schedule-service-backend/blob/master/app/services/auth_service.py"
click node_task_service "https://github.com/is200406moil/schedule-service-backend/blob/master/app/services/task_service.py"
click node_user_service "https://github.com/is200406moil/schedule-service-backend/blob/master/app/services/user_service.py"
click node_schedule_client "https://github.com/is200406moil/schedule-service-backend/blob/master/app/clients/schedule.py"
click node_templates "https://github.com/is200406moil/schedule-service-backend/blob/master/app/web/templates.py"
click node_user_repo "https://github.com/is200406moil/schedule-service-backend/blob/master/app/repositories/user_repository.py"
click node_task_repo "https://github.com/is200406moil/schedule-service-backend/blob/master/app/repositories/task_repository.py"
click node_database "https://github.com/is200406moil/schedule-service-backend/blob/master/app/core/database.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_main,node_ui_auth,node_ui_tasks,node_templates toneBlue
class node_ui_profile,node_api_auth,node_api_tasks,node_auth_service,node_task_service,node_user_service toneAmber
class node_ui_calendar,node_schedule_router,node_schedule_client toneMint
class node_user_repo,node_task_repo,node_database toneRose
class node_browser,node_schedule_service toneIndigo
```

## Components

### Приложение и интерфейс

- [FastAPI-приложение](https://github.com/is200406moil/schedule-service-backend/blob/master/app/main.py): `app/main.py`
- [Веб-аутентификация](https://github.com/is200406moil/schedule-service-backend/blob/master/app/routers/ui/auth.py): `app/routers/ui/auth.py`
- [Веб-задачи](https://github.com/is200406moil/schedule-service-backend/blob/master/app/routers/ui/tasks.py): `app/routers/ui/tasks.py`
- [HTML-шаблоны](https://github.com/is200406moil/schedule-service-backend/blob/master/app/web/templates.py): `app/web/templates.py`

### Пользователи и задачи

- [Профиль пользователя](https://github.com/is200406moil/schedule-service-backend/blob/master/app/routers/ui/profile.py): `app/routers/ui/profile.py`
- [Auth API](https://github.com/is200406moil/schedule-service-backend/blob/master/app/routers/auth.py): `app/routers/auth.py`
- [Tasks API](https://github.com/is200406moil/schedule-service-backend/blob/master/app/routers/tasks.py): `app/routers/tasks.py`
- [Аутентификация](https://github.com/is200406moil/schedule-service-backend/blob/master/app/services/auth_service.py): `app/services/auth_service.py`
- [Управление задачами](https://github.com/is200406moil/schedule-service-backend/blob/master/app/services/task_service.py): `app/services/task_service.py`
- [Профиль пользователя](https://github.com/is200406moil/schedule-service-backend/blob/master/app/services/user_service.py): `app/services/user_service.py`

### Расписание и календарь

- [Календарь и обзор](https://github.com/is200406moil/schedule-service-backend/tree/master/app/routers/ui): `app/routers/ui`
- [Schedule API](https://github.com/is200406moil/schedule-service-backend/blob/master/app/routers/schedule.py): `app/routers/schedule.py`
- [Клиент расписания](https://github.com/is200406moil/schedule-service-backend/blob/master/app/clients/schedule.py): `app/clients/schedule.py`

### Данные

- [Репозиторий пользователей](https://github.com/is200406moil/schedule-service-backend/blob/master/app/repositories/user_repository.py): `app/repositories/user_repository.py`
- [Репозиторий задач](https://github.com/is200406moil/schedule-service-backend/blob/master/app/repositories/task_repository.py): `app/repositories/task_repository.py`
- [PostgreSQL](https://github.com/is200406moil/schedule-service-backend/blob/master/app/core/database.py): `app/core/database.py`

### Other components

- **Студент в браузере**
- **Внешний сервис расписания**

## Connections

- Студент в браузере → FastAPI-приложение: отправляет запросы
- FastAPI-приложение → Веб-аутентификация: направляет запросы
- FastAPI-приложение → Веб-задачи: направляет запросы
- FastAPI-приложение → Календарь и обзор: направляет запросы
- FastAPI-приложение → Профиль пользователя: направляет запросы
- FastAPI-приложение → Auth API: направляет запросы
- FastAPI-приложение → Tasks API: направляет запросы
- FastAPI-приложение → Schedule API: направляет запросы
- Веб-аутентификация → Аутентификация: аутентифицирует и регистрирует
- Auth API → Аутентификация: обрабатывает учётные записи
- Веб-задачи → Управление задачами: управляет задачами
- Tasks API → Управление задачами: управляет задачами
- Профиль пользователя → Профиль пользователя: обновляет профиль
- Веб-аутентификация → HTML-шаблоны: рендерит страницы
- Веб-задачи → HTML-шаблоны: рендерит страницы
- Аутентификация → Репозиторий пользователей: читает и создаёт
- Профиль пользователя → Репозиторий пользователей: обновляет
- Управление задачами → Репозиторий задач: читает и изменяет
- Репозиторий пользователей → PostgreSQL: читает и записывает
- Репозиторий задач → PostgreSQL: читает и записывает
- Schedule API → Клиент расписания: получает расписание
- Клиент расписания → Внешний сервис расписания: запрашивает расписание
