Skip to content

darkgooddack/educational-platform

Repository files navigation

Educational platform

Static Badge Static Badge Static Badge Static Badge Static Badge Static Badge

Educational platform — это платформа для онлайн-обучения, которая предоставляет пользователям доступ к курсам, материалам и инструментам для обучения.

Этап 1: Планирование и определение требований

Определение функциональности:

  • Регистрация и авторизация 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.

Этап 2: Проектирование архитектуры

Архитектура API:

  • Модуль регистрации/авторизации.
  • Модуль поиска курсов.
  • Модуль прохождения курсов.
  • Модуль личного кабинета.
  • Модуль панели администратора.

База данных:

  • Таблицы для пользователей, курсов, администраторов, тестов, статей, видеолекций, новостей в блоге.
  • Связи между таблицами (один ко многим, многие ко многим).
  • Индексы для ускорения запросов к фильтрам.

Система прав доступа:

  • Разделение пользователей на роли (администратор, пользователь).
  • Разные уровни доступа к API (например, доступ к административной панели только для администраторов).
  • Микросервисная архитектура.

Этап 3: Настройка окружения и конфигурации

Разработка и настройка проекта:

  • Создание базовой структуры FastAPI проекта.
  • Настройка асинхронных баз данных (SQLAlchemy с поддержкой async).
  • Подключение и настройка ORM для работы с базой данных.
  • Создание моделей данных.
  • Создание схем.
  • Проектирование отдельных модулей frontend.
  • Настройка маршрутизации всего проекта.

Этап 4: Реализация функционала

Модуль регистрации/авторизации

  • Реализация OAuth2 токенами для авторизации пользователей.
  • Маршруты для регистрации, входа и восстановления пароля.
  • Вход через сторонние сервисы (Google, Yandex, VK)

Модуль поиска курсов

  • Фильтрация курсов по различным критериям.
  • Добавление курса в личный кабинет пользователя.
  • Доступ к курсу только после оплаты (исключение: курс бесплатный).

Модуль прохождения курсов

  • Каждый курс имеет разное количество материалов
  • При успешном прохождении итогового теста пользователь получает сертификат
  • Рейтинг и результаты прохождения курса сохраняется
  • Курс находится в личном кабинете ещё месяц после чего удаляется, сертификаты остаются актуальными.

Модуль личного кабинета.

  • Возможность редактировать личную информацию
  • Скачивать свои сертификаты в формате .pdf

Модуль панели администратора.

  • Добавление курсов
  • Добавление статей, тестов и видео материалов

Этап 5: Тестирование оптимизация и linting

Написание тестов:

  • Юнит-тесты для всех API эндпоинтов.
  • linting, создание единого стандарта написания кода, linting на протяжении всей разработки приложения
  • Покрытие тестами не менее 70% кода

Оптимизация производительности:

  • Использование кеширования для популярных курсов (Redis).
  • Оптимизация запросов к базе данных (использование индексов, кэширование).

Этап 6: Развертывание

Подготовка окружения:

  • Настройка серверов или использование облачных сервисов.
  • Настройка Docker для контейнеризации приложения.
  • Настройка CI/CD для автоматизации развертывания.

Мониторинг и логирование:

  • Настройка логирования для отслеживания ошибок.

Защита и безопасность:

  • Использование SSL сертификатов для защиты соединений.
  • Защита API от атак (например, защита от брутфорса, SQL-инъекций).

Этап 7: Поддержка и дальнейшее развитие

  • Реализация новых функций по запросам пользователей.
  • Поддержка мобильных устройств и интеграция с приложениями.
  • Регулярное обновление безопасности и производительности.

-[v] Server: http://./docs

About

Обучающая платформа

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages