- user (смотрит видео, делает посылки задач)
- author (создает курсы, темы, подтемы, пункты, загружает видео и оформляет задачи)
- admin (банит авторов, удаляет/скрывает курсы, добавляет юзеров на курсы).
Общая архитектура по микросервисам для mvp пока тогда такая
- API шлюз - nginx маршрутизация + проверка jwt
- Auth Service - логин, регистрация, отдаем jwt
- User Service - пользователи их курсы и прогресс
- Course Service - управление курсами
- Content Service - храним задачи, конспекты и видео в Object Storage, отдаем/загружаем
- Submission Service - проверка посылок, хранение, отслеживание статуса
Используем REST. Разворачиваем в docker compose. Тестами ключевые моменты покрываем, так как пишешь только бэк то все покрываем. Степиком мы становиться не собираемся, у нас будет мало курсов и мало одновременных юзеров, так что главное не эффективность, а читаемость и аккуратность.
- Продумать и согласовать API
- Продумать зависимости: бд, ручки смежных сервисов
- Продумать схему бд
- Заполнить:
- Dockerfile
- requirements.txt если питон
- .env.example
- README.md описать ручки
- .gitignore если надо, но лучше в глобальный
- alembic.ini если питон настраиваем миграции бд
- Makefile читаем дописываем что надо для удобства. make test обязательно
- Добавляем сервис и бд в глобальный docker-compose.yml
- Прописываем логику
- Все пишем отдельными веточками и мержим через пул реквесты
- Логи направляем в stdout/stderr чтобы автоматически собирались докером
- Пишем тесты (лучше сразу после написания каждой ручки)
- Добавляем в gateway/nginx.conf сервис и ручки с ролями если gateway сервис написан. Там проверка токенов по ролям
- Написать фронт
- Настроить CI/CD
- Настроить ELK и метрики
- Сделать красивую доку
- Добавить комментарии под темами
- Добавить платежный модуль
- Добавить тестовые пункты
- Настроить рейтлимитр
- Добавить альтернативные способы входа
будет страничка логина после которой список курсов. Он небольшой так что никакого поиска и пагинации пока не надо, просто список потом выбираешь курс и если он тебе доступен, то будет внутри выглядеть как на степике примерно. Темы-подтемы-пункты в каждом из которых либо видео либо текст либо задача, вот как тут для примера https://stepik.org/course/63085/syllabus если ты автор то высвечиваются только твои курсы и кнопка сделать новый курс после чего ты можешь вставлять удалять темы подтемы пункты в произвольном порядке и в каждый пункт загружать контент один из 3х видов. При загрузке задач нужно подгрузить условия, тесты в json формате или программу чеккер вместо тестов, если нет одного правильного ответа. Чекер это функция на питоне которая принимает тест в виде словарика и ответ программы и отвечает true/false правильный ли ответ. Если ты админ то у тебя просто панель со списками авторов, юзеров и курсов. Авторов и юзеров можешь банить или разбанить, курсы можешь скрывать или открывать. Забаненные люди не могут открывать никакие курсы. Скрытые курсы тоже никто не может открывать.