# Структура проекта 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. **Логирование** - используйте централизованную систему логирования
