Educational platform — это платформа для онлайн-обучения, которая предоставляет пользователям доступ к курсам, материалам и инструментам для обучения.
- Регистрация и авторизация OAuth2 + (Google, VK, Yandex)
- Каталог курсов с возможностью фильтрации и поиска.
- Система оплаты курсов.
- Форма обратной связи.
- Хранение видео контента в высоком качестве.
- Блог
- Сообщения
- Панель администратора (управление курсами и пользователями)
- Личный кабинет пользователя:
- рабочий стол
- сообщения
- обучение (курсы, видеолекции, тесты)
- мои материалы (статьи, видеолекции, тесты)
- настройки
- выйти
- Прохождение курса:
- текстовые материалы
- видеоматериалы
- тесты (результат, правильные ответы)
- сертификат
- Уведомления (пользователь, тема, текст, дата)
Примечание: пользовательские материалы не имеют сертификатов и являются бесплатными и доступными для других.
- Backend: FastAPI для создания API.
- Database: PostgreSQL для хранения данных о пользователях, курсах и т.д.
- ORM: SQLAlchemy (Alembic для миграций, pydantic для валидации)
- Caching: Redis
- Logging: стандартная библиотека logging
- Testing: PyTest
- Authentication: OAuth2 для управления авторизацией и регистрацией.
- Frontend: React.
- Streaming: Nginx с модулем RTMP.
- Модуль регистрации/авторизации.
- Модуль поиска курсов.
- Модуль прохождения курсов.
- Модуль личного кабинета.
- Модуль панели администратора.
- Таблицы для пользователей, курсов, администраторов, тестов, статей, видеолекций, новостей в блоге.
- Связи между таблицами (один ко многим, многие ко многим).
- Индексы для ускорения запросов к фильтрам.
- Разделение пользователей на роли (администратор, пользователь).
- Разные уровни доступа к API (например, доступ к административной панели только для администраторов).
- Микросервисная архитектура.
- Создание базовой структуры FastAPI проекта.
- Настройка асинхронных баз данных (SQLAlchemy с поддержкой async).
- Подключение и настройка ORM для работы с базой данных.
- Создание моделей данных.
- Создание схем.
- Проектирование отдельных модулей frontend.
- Настройка маршрутизации всего проекта.
- Реализация OAuth2 токенами для авторизации пользователей.
- Маршруты для регистрации, входа и восстановления пароля.
- Вход через сторонние сервисы (Google, Yandex, VK)
- Фильтрация курсов по различным критериям.
- Добавление курса в личный кабинет пользователя.
- Доступ к курсу только после оплаты (исключение: курс бесплатный).
- Каждый курс имеет разное количество материалов
- При успешном прохождении итогового теста пользователь получает сертификат
- Рейтинг и результаты прохождения курса сохраняется
- Курс находится в личном кабинете ещё месяц после чего удаляется, сертификаты остаются актуальными.
- Возможность редактировать личную информацию
- Скачивать свои сертификаты в формате .pdf
- Добавление курсов
- Добавление статей, тестов и видео материалов
- Юнит-тесты для всех API эндпоинтов.
- linting, создание единого стандарта написания кода, linting на протяжении всей разработки приложения
- Покрытие тестами не менее 70% кода
- Использование кеширования для популярных курсов (Redis).
- Оптимизация запросов к базе данных (использование индексов, кэширование).
- Настройка серверов или использование облачных сервисов.
- Настройка Docker для контейнеризации приложения.
- Настройка CI/CD для автоматизации развертывания.
- Настройка логирования для отслеживания ошибок.
- Использование SSL сертификатов для защиты соединений.
- Защита API от атак (например, защита от брутфорса, SQL-инъекций).
- Реализация новых функций по запросам пользователей.
- Поддержка мобильных устройств и интеграция с приложениями.
- Регулярное обновление безопасности и производительности.