🎓 ExamFlow

January 4, 2026 · View on GitHub

Современная образовательная платформа для подготовки к ЕГЭ и ОГЭ с использованием искусственного интеллекта.

Учебный проект

📋 Описание

ExamFlow — это комплексная платформа для подготовки к экзаменам, которая объединяет:

  • 🤖 ИИ-помощник на базе Gemini 2.0
  • 📚 База заданий ФИПИ
  • 📱 Telegram бот
  • 🎯 Персонализированные рекомендации
  • 📊 Аналитика прогресса
  • 🎮 Геймификация обучения

✨ Основные возможности

Для учащихся

  • ИИ-ассистент: Получайте подробные ответы на вопросы и объяснения сложных тем
  • База заданий: Доступ к заданиям ФИПИ по математике и русскому языку
  • Персонализация: Адаптивное обучение под ваш уровень
  • Telegram бот: Удобный доступ к материалам прямо в мессенджере
  • Аналитика: Отслеживание прогресса и рекомендации по улучшению

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

  • Модульная архитектура: Четкое разделение компонентов
  • RESTful API: Стандартизированные эндпоинты
  • Кэширование: Оптимизация производительности через Redis
  • Безопасность: CSP заголовки, rate limiting, защита от атак
  • Адаптивный дизайн: Оптимальная работа на всех устройствах

🚀 Быстрый старт

Требования

  • Python 3.11+
  • PostgreSQL 15+
  • Redis 7+ (опционально, для кэширования)
  • Node.js 18+ (для frontend инструментов)

Установка

  1. Клонирование репозитория
git clone https://github.com/yourusername/ExamFlow.git
cd ExamFlow
  1. Создание виртуального окружения
python -m venv venv
source venv/bin/activate  # Linux/Mac
# или
venv\Scripts\activate  # Windows
  1. Установка зависимостей
pip install -r requirements.txt
  1. Настройка переменных окружения
cp .env.example .env
# Отредактируйте .env файл с вашими настройками

Необходимые переменные окружения:

SECRET_KEY=your-secret-key
DEBUG=True
DATABASE_URL=postgresql://user:password@localhost:5432/examflow
REDIS_URL=redis://localhost:6379/0
GEMINI_API_KEY=your-gemini-api-key
TELEGRAM_BOT_TOKEN=your-telegram-bot-token
TELEGRAM_WEBHOOK_SECRET=your-webhook-secret
  1. Настройка базы данных
python manage.py migrate
python manage.py createsuperuser
  1. Загрузка статических файлов
python manage.py collectstatic --noinput
  1. Запуск сервера разработки
python manage.py runserver

Приложение будет доступно по адресу: http://localhost:8000

📁 Структура проекта

ExamFlow/
├── core/                 # Основное приложение (персонализация, RAG-система)
├── learning/             # Модуль обучения
├── ai/                   # Модуль ИИ-помощника
├── analytics/            # Модуль аналитики
├── telegram_bot/         # Telegram бот
├── telegram_auth/        # Авторизация через Telegram
├── themes/               # Система тем оформления
├── examflow_project/     # Настройки проекта
├── templates/            # HTML шаблоны
├── static/               # Статические файлы (CSS, JS, изображения)
├── tests/                # Тесты
├── docs/                 # Документация
└── tools/                # Вспомогательные инструменты

🧪 Тестирование

Запуск всех тестов

python manage.py test

Запуск с покрытием

pytest --cov=. --cov-report=html

Линтинг и проверка кода

ruff check .
black --check .
isort --check-only .
flake8 .

🔧 Разработка

Миграции базы данных

# Создание миграций
python manage.py makemigrations

# Применение миграций
python manage.py migrate

Запуск Telegram бота

python manage.py runbot

Сборка статических файлов

python manage.py collectstatic --noinput

🌐 Деплой

Render.com

Проект настроен для деплоя на Render.com через render.yaml.

Необходимые переменные окружения на Render:

  • SECRET_KEY
  • DATABASE_URL (автоматически предоставляется Render)
  • GEMINI_API_KEY
  • TELEGRAM_BOT_TOKEN
  • TELEGRAM_WEBHOOK_SECRET
  • DEBUG=False
  • ALLOWED_HOSTS=examflow.onrender.com,yourdomain.com

📚 API документация

API документация доступна по адресу /api/docs/ (при использовании drf-spectacular).

Основные эндпоинты:

  • /api/tasks/random/ - Получить случайное задание
  • /api/tasks/<id>/ - Получить задание по ID
  • /api/subjects/ - Список предметов
  • /api/statistics/ - Статистика пользователя
  • /ai/chat/ - Чат с ИИ-помощником

🔒 Безопасность

  • Content Security Policy (CSP) настроен
  • Rate limiting для API эндпоинтов
  • Защита от CSRF атак
  • Безопасные заголовки HTTP
  • Маскирование чувствительных данных в логах

📄 Лицензия

Этот проект является учебным.

🤝 Вклад в проект

Проект находится в активной разработке. Все предложения и улучшения приветствуются!

📞 Контакты

🔄 Статус проекта

  • ✅ Основной функционал работает
  • ✅ ИИ-помощник интегрирован
  • ✅ Telegram бот функционирует
  • ✅ База заданий загружается
  • 🔄 Дополнительные функции в разработке

Примечание: Сайт и ИИ-функциональность могут быть временно недоступны во время разработки.