Skip to content

ifrair/AlGoBotat

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Описание:

Делаем упрощенный аналог Stepik. Всего 3 роли:
  • user (смотрит видео, делает посылки задач)
  • author (создает курсы, темы, подтемы, пункты, загружает видео и оформляет задачи)
  • admin (банит авторов, удаляет/скрывает курсы, добавляет юзеров на курсы).

Общая архитектура по микросервисам для mvp пока тогда такая

  1. API шлюз - nginx маршрутизация + проверка jwt
  2. Auth Service - логин, регистрация, отдаем jwt
  3. User Service - пользователи их курсы и прогресс
  4. Course Service - управление курсами
  5. Content Service - храним задачи, конспекты и видео в Object Storage, отдаем/загружаем
  6. Submission Service - проверка посылок, хранение, отслеживание статуса

Используем REST. Разворачиваем в docker compose. Тестами ключевые моменты покрываем, так как пишешь только бэк то все покрываем. Степиком мы становиться не собираемся, у нас будет мало курсов и мало одновременных юзеров, так что главное не эффективность, а читаемость и аккуратность.

Чеклист, чтобы добавить новый сервис:

  1. Продумать и согласовать API
  2. Продумать зависимости: бд, ручки смежных сервисов
  3. Продумать схему бд
  4. Заполнить:
    • Dockerfile
    • requirements.txt если питон
    • .env.example
    • README.md описать ручки
    • .gitignore если надо, но лучше в глобальный
    • alembic.ini если питон настраиваем миграции бд
    • Makefile читаем дописываем что надо для удобства. make test обязательно
  5. Добавляем сервис и бд в глобальный docker-compose.yml
  6. Прописываем логику
    • Все пишем отдельными веточками и мержим через пул реквесты
    • Логи направляем в stdout/stderr чтобы автоматически собирались докером
  7. Пишем тесты (лучше сразу после написания каждой ручки)
  8. Добавляем в gateway/nginx.conf сервис и ручки с ролями если gateway сервис написан. Там проверка токенов по ролям

TODO после написания всех сервисов:

  • Написать фронт
  • Настроить CI/CD
  • Настроить ELK и метрики
  • Сделать красивую доку
  • Добавить комментарии под темами
  • Добавить платежный модуль
  • Добавить тестовые пункты
  • Настроить рейтлимитр
  • Добавить альтернативные способы входа

Доп описание

будет страничка логина после которой список курсов. Он небольшой так что никакого поиска и пагинации пока не надо, просто список потом выбираешь курс и если он тебе доступен, то будет внутри выглядеть как на степике примерно. Темы-подтемы-пункты в каждом из которых либо видео либо текст либо задача, вот как тут для примера https://stepik.org/course/63085/syllabus если ты автор то высвечиваются только твои курсы и кнопка сделать новый курс после чего ты можешь вставлять удалять темы подтемы пункты в произвольном порядке и в каждый пункт загружать контент один из 3х видов. При загрузке задач нужно подгрузить условия, тесты в json формате или программу чеккер вместо тестов, если нет одного правильного ответа. Чекер это функция на питоне которая принимает тест в виде словарика и ответ программы и отвечает true/false правильный ли ответ. Если ты админ то у тебя просто панель со списками авторов, юзеров и курсов. Авторов и юзеров можешь банить или разбанить, курсы можешь скрывать или открывать. Забаненные люди не могут открывать никакие курсы. Скрытые курсы тоже никто не может открывать.

About

Пишем сайт для курсов по программированию Алексея Пырко на микросервисах

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors