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

9.0 KiB
Raw Blame History

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