logboard/docs/project-structure.md
Сергей Антропов c40b2b312e docs: update documentation to reflect new project structure
- Update README.md with new project structure and installation instructions
- Update docs/installation.md with simplified setup process
- Update docs/configuration.md with correct file paths
- Update docs/index.md with new documentation structure
- Add docs/project-structure.md with detailed architecture overview
- Reflect changes from refactoring: app/ directory structure, .env file usage
- Update installation instructions to use docker compose up --build -d
- Add comprehensive project structure documentation
2025-08-20 18:32:31 +03:00

173 lines
9.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Структура проекта LogBoard+
**Автор:** Сергей Антропов
**Сайт:** https://devops.org.ru
## Обзор структуры
LogBoard+ имеет модульную архитектуру с четким разделением ответственности. Проект организован в соответствии с лучшими практиками Python и FastAPI.
## Дерево файлов
```
logboard/
├── app/ # Основная папка приложения
│ ├── __init__.py # Инициализация пакета
│ ├── app.py # Основное приложение FastAPI
│ ├── excluded_containers.json # Исключенные контейнеры
│ ├── api/ # API модули
│ │ ├── __init__.py
│ │ └── v1/
│ │ ├── __init__.py
│ │ ├── router.py # Основной роутер API
│ │ └── endpoints/ # API endpoints
│ │ ├── __init__.py
│ │ ├── auth.py # Аутентификация
│ │ ├── containers.py # Управление контейнерами
│ │ ├── logs.py # Логи
│ │ ├── pages.py # HTML страницы
│ │ ├── settings.py # Настройки
│ │ └── websocket.py # WebSocket API
│ ├── core/ # Основные модули
│ │ ├── __init__.py
│ │ ├── auth.py # Аутентификация и авторизация
│ │ ├── config.py # Конфигурация приложения
│ │ ├── docker.py # Работа с Docker API
│ │ └── logger.py # Система логирования
│ ├── models/ # Модели данных
│ │ ├── __init__.py
│ │ └── auth.py # Модели аутентификации
│ ├── static/ # Статические файлы
│ │ ├── css/ # CSS стили
│ │ │ ├── index.css # Основные стили
│ │ │ ├── login.css # Стили страницы входа
│ │ │ └── error.css # Стили страниц ошибок
│ │ ├── js/ # JavaScript файлы
│ │ │ ├── index.js # Основная логика
│ │ │ ├── login.js # Логика входа
│ │ │ └── error.js # Логика ошибок
│ │ ├── images/ # Изображения
│ │ │ └── favicon.ico # Иконка сайта
│ │ └── fonts/ # Шрифты
│ └── templates/ # HTML шаблоны
│ ├── index.html # Главная страница
│ ├── login.html # Страница входа
│ └── error.html # Страницы ошибок
├── docs/ # Документация
│ ├── index.md # Главная страница документации
│ ├── installation.md # Установка и настройка
│ ├── configuration.md # Конфигурация
│ ├── api.md # API документация
│ ├── websocket.md # WebSocket API
│ ├── security.md # Безопасность
│ ├── troubleshooting.md # Устранение неполадок
│ └── project-structure.md # Структура проекта
├── snapshots/ # Снимки логов
├── screenshots/ # Скриншоты интерфейса
├── .env # Переменные окружения (создается из env.example)
├── env.example # Пример переменных окружения
├── docker-compose.yml # Конфигурация Docker Compose
├── Dockerfile # Образ Docker
├── requirements.txt # Зависимости Python
├── start.sh # Скрипт запуска
└── README.md # Документация проекта
```
## Описание модулей
### `app/app.py`
Основной файл приложения FastAPI. Содержит:
- Инициализацию FastAPI приложения
- Подключение статических файлов
- Обработчики исключений
- Подключение роутеров
### `app/api/v1/`
API модули версии 1:
- **router.py** - Основной роутер, объединяющий все endpoints
- **endpoints/** - Отдельные модули для каждого типа API
### `app/api/v1/endpoints/`
API endpoints разделены по функциональности:
- **auth.py** - Аутентификация (login, logout, me)
- **containers.py** - Управление контейнерами (список, проекты)
- **logs.py** - Работа с логами (получение, статистика, снимки)
- **pages.py** - HTML страницы (главная, вход, ошибки)
- **settings.py** - Настройки приложения
- **websocket.py** - WebSocket API для real-time логов
### `app/core/`
Основные модули приложения:
- **auth.py** - Логика аутентификации и авторизации
- **config.py** - Конфигурация приложения из переменных окружения
- **docker.py** - Работа с Docker API
- **logger.py** - Система логирования
### `app/models/`
Pydantic модели данных:
- **auth.py** - Модели для аутентификации (UserLogin, Token)
### `app/static/`
Статические файлы:
- **css/** - CSS стили для всех страниц
- **js/** - JavaScript файлы с логикой интерфейса
- **images/** - Изображения и иконки
- **fonts/** - Шрифты
### `app/templates/`
HTML шаблоны:
- **index.html** - Главная страница с интерфейсом
- **login.html** - Страница входа в систему
- **error.html** - Шаблон для страниц ошибок
## Принципы организации
### 1. Модульность
Каждый модуль отвечает за свою область ответственности:
- API endpoints разделены по функциональности
- Core модули содержат бизнес-логику
- Models определяют структуру данных
### 2. Версионирование API
API организован по версиям (`v1/`), что позволяет:
- Добавлять новые версии без нарушения совместимости
- Поддерживать несколько версий одновременно
- Плавно мигрировать пользователей
### 3. Разделение статических файлов
Статические файлы разделены по типам:
- CSS для стилизации
- JavaScript для интерактивности
- Изображения для визуальных элементов
### 4. Конфигурация
Все настройки централизованы в `app/core/config.py`:
- Загрузка из переменных окружения
- Значения по умолчанию
- Валидация конфигурации
## Добавление новых модулей
### Новый API endpoint
1. Создайте файл в `app/api/v1/endpoints/`
2. Определите роутер с нужными маршрутами
3. Подключите в `app/api/v1/router.py`
### Новый core модуль
1. Создайте файл в `app/core/`
2. Добавьте необходимые импорты
3. Обновите документацию
### Новые статические файлы
1. Добавьте файлы в соответствующие папки `app/static/`
2. Обновите ссылки в HTML шаблонах
3. Проверьте корректность загрузки
## Лучшие практики
1. **Именование файлов** - используйте snake_case для Python файлов
2. **Документация** - добавляйте docstrings ко всем функциям
3. **Типизация** - используйте type hints везде, где возможно
4. **Обработка ошибок** - добавляйте try-catch блоки
5. **Логирование** - используйте централизованную систему логирования