# mira973/guestbook-workshop architecture

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

- Interactive diagram: https://gitdiagram.com/mira973/guestbook-workshop
- Repository: https://github.com/mira973/guestbook-workshop

## Overview

Это небольшая гостевая книга на FastAPI: клиент получает приветствие и статус сервиса, просматривает сообщения или добавляет новое; сообщения хранятся в PostgreSQL. Основная логика и SQL находятся в main.py. README описывает желаемые конфигурацию и упаковку, но их файлов в дереве нет, поэтому они не показаны. Взаимодействия отражают просмотренный main.py.

Main entry points: [`main.py`](https://github.com/mira973/guestbook-workshop/blob/main/main.py) (FastAPI-приложение)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["HTTP API"]
  node_app["FastAPI-приложение<br/>[main.py]"]
  node_greeting["Приветствие /<br/>[main.py]"]
  node_health["Проверка /health<br/>[main.py]"]
  node_message_model["Модель сообщения<br/>[main.py]"]
  node_list_messages["Список /messages<br/>[main.py]"]
  node_add_message["Добавление /messages<br/>[main.py]"]
end

subgraph group_storage["Хранение"]
  node_lifespan["Инициализация таблицы<br/>[main.py]"]
  node_connect["Подключение к БД<br/>[main.py]"]
  node_postgres[("PostgreSQL")]
end

node_client(("HTTP-клиент"))

node_client -->|"HTTP-запросы"| node_app
node_app -->|"маршрутизирует"| node_greeting
node_app -->|"маршрутизирует"| node_health
node_app -->|"маршрутизирует"| node_list_messages
node_app -->|"маршрутизирует"| node_add_message
node_add_message -->|"проверяет тело"| node_message_model
node_lifespan -->|"вызывает"| node_connect
node_list_messages -->|"вызывает"| node_connect
node_add_message -->|"вызывает"| node_connect
node_connect -->|"открывает соединение"| node_postgres
node_lifespan -->|"создаёт таблицу"| node_postgres
node_list_messages -->|"читает сообщения"| node_postgres
node_add_message -->|"записывает сообщение"| node_postgres

click node_app "https://github.com/mira973/guestbook-workshop/blob/main/main.py"
click node_greeting "https://github.com/mira973/guestbook-workshop/blob/main/main.py"
click node_health "https://github.com/mira973/guestbook-workshop/blob/main/main.py"
click node_message_model "https://github.com/mira973/guestbook-workshop/blob/main/main.py"
click node_list_messages "https://github.com/mira973/guestbook-workshop/blob/main/main.py"
click node_add_message "https://github.com/mira973/guestbook-workshop/blob/main/main.py"
click node_lifespan "https://github.com/mira973/guestbook-workshop/blob/main/main.py"
click node_connect "https://github.com/mira973/guestbook-workshop/blob/main/main.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_app,node_greeting,node_health,node_message_model,node_list_messages,node_add_message toneBlue
class node_lifespan,node_connect,node_postgres toneAmber
class node_client toneIndigo
```

## Components

### HTTP API

- [FastAPI-приложение](https://github.com/mira973/guestbook-workshop/blob/main/main.py): `main.py`
- [Приветствие /](https://github.com/mira973/guestbook-workshop/blob/main/main.py): `main.py`
- [Проверка /health](https://github.com/mira973/guestbook-workshop/blob/main/main.py): `main.py`
- [Модель сообщения](https://github.com/mira973/guestbook-workshop/blob/main/main.py): `main.py`
- [Список /messages](https://github.com/mira973/guestbook-workshop/blob/main/main.py): `main.py`
- [Добавление /messages](https://github.com/mira973/guestbook-workshop/blob/main/main.py): `main.py`

### Хранение

- [Инициализация таблицы](https://github.com/mira973/guestbook-workshop/blob/main/main.py): `main.py`
- [Подключение к БД](https://github.com/mira973/guestbook-workshop/blob/main/main.py): `main.py`
- **PostgreSQL**

### Other components

- **HTTP-клиент**

## Connections

- HTTP-клиент → FastAPI-приложение: HTTP-запросы
- FastAPI-приложение → Приветствие /: маршрутизирует
- FastAPI-приложение → Проверка /health: маршрутизирует
- FastAPI-приложение → Список /messages: маршрутизирует
- FastAPI-приложение → Добавление /messages: маршрутизирует
- Добавление /messages → Модель сообщения: проверяет тело
- Инициализация таблицы → Подключение к БД: вызывает
- Список /messages → Подключение к БД: вызывает
- Добавление /messages → Подключение к БД: вызывает
- Подключение к БД → PostgreSQL: открывает соединение
- Инициализация таблицы → PostgreSQL: создаёт таблицу
- Список /messages → PostgreSQL: читает сообщения
- Добавление /messages → PostgreSQL: записывает сообщение
