Skip to content

Latest commit

 

History

History
100 lines (75 loc) · 4.73 KB

File metadata and controls

100 lines (75 loc) · 4.73 KB

Техническая спецификация

🏠 Главная | 🇺🇸 English Version


Important

Архитектурная парадигма: Проект акцентирует внимание на максимальной развязке (decoupling), встроенной типизации через Astro Content Collections и stateless-интеграциях. Это позволяет полностью отказаться от базы данных и админки, многократно снижая векторы атак, сохраняя при этом гибкость управления контентом и интерактивность.

🧩 Архитектурная топология

Поток данных строго однонаправленный. Все чувствительные операции и системные переменные хранятся и исполняются исключительно на стороне сервера.

graph TD
    A["Браузер Клиента"] -->|HTTP/HTTPS| B["Nginx / Reverse Proxy"]
    B --> C["Docker Контейнер (Astro App)"]
    
    subgraph "Серверная Инфраструктура"
      C -->|Статические страницы| D["Astro SSG Движок"]
      C -->|Динамические API Роуты| E["Astro Bun SSR"]
      E -->|Валидация Данных| F["Zod Схемы"]
      F -->|Очистка Данных| G["HTML Санитизатор"]
    end
    
    G -->|Защищенный POST Запрос| H["Telegram API"]
    
    subgraph "Управление Контентом"
      D -.-> I["Astro Content Collections (Markdown/MDX)"]
    end
Loading

🔐 Архитектура безопасности

  1. Защита от XSS: Все пользовательские вводы из форм очищаются через sanitize-html на бэкенде Astro (Bun) для исключения инъекций скриптов.
  2. Маскирование Окружения: Секретные ключи (BOT_TOKEN, CHAT_ID) никогда не попадают в клиентский код и используются только на сервере.
  3. Изоляция Контейнеров: Docker-сборка базируется на Bun Alpine с жестко заданным запуском процессов от имени пользователя без root-прав (non-root execution).

🚀 CLI Команды

Для локального запуска и проверки репозитория используйте следующие команды:

# Инициализация зависимостей
bun install

# Запуск dev-сервера
bun run dev

# Сборка production-версии
bun run build

# Строгая проверка типов (TypeScript / Astro)
bun run check

🚢 Флоу CI/CD Деплоя

Автоматизация процесса происходит по следующему сценарию:

sequenceDiagram
    participant Dev as "Разработчик"
    participant GH as "GitHub (main)"
    participant Coolify as "Coolify CI/CD"
    participant Server as "Production Сервер"

    Dev->>GH: push коммита
    GH->>Coolify: Webhook Триггер
    Coolify->>Server: Скачивание кода и сборка Docker-образа
    Server-->>Coolify: Сборка успешна
    Coolify->>Server: Деплой контейнера (Zero-Downtime)
Loading


Alexios Odos  |  Aliaksei Patskevich
Software Engineer • Code, Design & AI
GitHubTelegram