Files
telepost/architecture.md
T

7.7 KiB
Raw Blame History

Архитектура приложения TelePost Clone

1. Общая архитектура системы

┌─────────────────┐    ┌──────────────────┐    ┌─────────────────┐
│   Frontend      │◄──►│    Backend       │◄──►│  External APIs  │
│ (SvelteKit)    │    │   (FastAPI)      │    │ (Telegram, MAX) │
└─────────────────┘    └──────────────────┘    └─────────────────┘
                              │
                       ┌──────────────────┐
                       │   PostgreSQL     │
                       │                  │
                       │   Redis (queue) │
                       └──────────────────┘

2. Структура проекта

telepost-clone/
├── backend/                 # FastAPI приложение
│   ├── app/
│   │   ├── api/            # API маршруты
│   │   ├── models/         # ORM модели
│   │   ├── schemas/        # Pydantic схемы
│   │   ├── services/       # Бизнес-логика
│   │   ├── database/       # Настройки базы данных
│   │   ├── auth/           # Аутентификация
│   │   ├── integrations/   # Интеграции с внешними сервисами
│   │   └── utils/          # Утилиты
│   ├── migrations/         # Миграции базы данных
│   ├── tests/              # Тесты
│   └── requirements.txt    # Зависимости
├── frontend/               # SvelteKit приложение
│   ├── src/
│   │   ├── routes/         # Страницы
│   │   ├── components/     # Компоненты
│   │   ├── lib/            # Библиотеки
│   │   ├── stores/         # Svelte stores
│   │   └── app.html        # Базовый шаблон
│   ├── static/             # Статические файлы
│   └── package.json        # Зависимости
├── docs/                   # Документация
└── docker-compose.yml      # Оркестрация

3. Подробное описание компонентов

3.1. Бэкенд (FastAPI)

Основные модули:

  • Auth module: Telegram Login Widget с проверкой аутентичности
  • Posts module: CRUD операции для постов, работа с черновиками
  • Channels module: Управление Telegram-каналами
  • Integrations module: Подключение и управление внешними платформами
  • Publications module: Планирование и выполнение публикаций
  • Media module: Загрузка и обработка медиафайлов

3.2. Фронтенд (SvelteKit)

Основные страницы:

  • /login - Страница входа через Telegram
  • /dashboard - Главная панель управления
  • /posts - Список постов
  • /posts/new - Создание нового поста
  • /posts/[id]/edit - Редактирование поста
  • /channels - Управление каналами
  • /integrations - Подключение интеграций
  • /history - История публикаций

3.3. База данных (PostgreSQL)

Основные таблицы:

  • users: Информация о пользователях
  • channels: Привязанные Telegram-каналы
  • posts: Созданные посты
  • integrations: Настроенные интеграции
  • publications: История публикаций
  • media_files: Загруженные медиафайлы

4. Потоки работы

4.1. Аутентификация

1. Пользователь переходит на /login
2. Нажимает кнопку "Войти через Telegram"
3. Telegram возвращает данные пользователя
4. Приложение проверяет подлинность данных
5. Создается/обновляется запись пользователя
6. Генерируется JWT-токен
7. Пользователь перенаправляется в панель управления

4.2. Создание и публикация поста

1. Пользователь создает новый пост
2. Пользователь выбирает каналы для публикации
3. Пользователь может назначить время публикации
4. Пост сохраняется в базе данных
5. Если время публикации в будущем - задача помещается в очередь
6. При наступлении времени публикации:
   - Формируется сообщение под формат каждого канала
   - Отправляется в соответствующие интеграции
   - Результат сохраняется в истории публикаций

5. Технические особенности

5.1. Безопасность

  • Проверка аутентичности данных от Telegram
  • Валидация всех входных данных
  • Защита от XSS и CSRF атак
  • Хранение чувствительных данных в зашифрованном виде

5.2. Масштабируемость

  • Использование очередей задач для фоновых операций
  • Кэширование частых запросов
  • Оптимизация SQL-запросов

5.3. Надежность

  • Обработка ошибок и повторные попытки отправки
  • Логирование всех действий
  • Мониторинг статуса публикаций

6. Особенности реализации

6.1. Визуальный редактор

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

  • Форматирование текста
  • Вставку изображений и видео
  • Добавление опросов
  • Работу с альбомами

6.2. Поддержка различных типов контента

  • Текстовые посты
  • Медиафайлы (фото, видео, документы)
  • Альбомы
  • Опросы
  • Видеосообщения
  • Специальные элементы (реакции, закрепление)

6.3. Интеграции

  • Telegram (основная платформа)
  • MAX (как пример внешней интеграции)
  • Возможность легко добавлять новые интеграции

7. План реализации MVP

  1. Этап 1: Базовая аутентификация и структура приложения
  2. Этап 2: Создание и редактирование постов
  3. Этап 3: Публикация в Telegram
  4. Этап 4: Добавление интеграции с внешней платформой
  5. Этап 5: Расширенные функции (планирование, история, черновики)