python3.9+
FastAPI - https://fastapi.tiangolo.com/ (Основной веб фреймворк)
SQLAlchemy (asyncpg) - https://www.sqlalchemy.org/ (ORM)
pydantic - https://pydantic-docs.helpmanual.io/ (Сериализация, схемы)
alembic - https://alembic.sqlalchemy.org/en/latest/ (Миграции)
pytest - https://docs.pytest.org/en/6.2.x/contents.html (Основной фреймворк для тестов) faker - https://zetcode.com/python/faker/ (Фейковые данные) pytest-asyncio - https://pypi.org/project/pytest-asyncio/ factory-boy - https://factoryboy.readthedocs.io/en/stable/ (автоматическая генерация фикстур)
Актуальные версии всех библиотек указаны в pyproject.toml (dependencies)
-
Заранее создать базу в PostgreSQL и прописать данные с пользователем, самой бд и портами в
src/core/config/.env
примеры можно брать из.envexample
в той же директории. -
Установить виртуальное окружение
-
sudo apt-get update && sudo apt-get -y upgrade
-
sudo-apt-get install -y python3-venv
-
poetry install
-
(Желательно) Прогнать тесты, убедиться что всё работает:
poetry run pytest
-
Если всё нормально
poetry run auvicorn app:app --reload
- Выполнить шаг 0 в локальной настройке, только в отдельном контейнере постгреса.
sudo apt-get update && sudo apt-get -y upgrade
sudo-apt-get install docker docker-compose
docker run --rm -ti -p 8000:8000 --name classroom classroom/classroom_back:latest
-
С установленными пакетами и активированным виртуальным окружением: (После изменений в моделях)
alembic revision --autogenerate -m <Имя миграции, например "добавлено поле email">
-
После предыдущего пункта:
alembic upgrade head
- Повторить предыдущий шаг через
docker exec -it classroom-back <команда>
- Репозитории должны инжектится в сервисы через DI.
- Логирование, возможно подключить сентри
- Pre-commit: Black и isort сильно конфликтуют, длинная строка с одним импортом не даёт сделать коммит
- Создавать диалог может только ученик с преподавателем, надо запрещать всем подряд начинать диалоги с кем попало
- Переделать чат на вебсокетах? Слишком большое количество подключений одновременно не убьёт сервер?
- Проверить везде DI, не создавать нигде объекты вручную (возможно только тесты)
- Почистить ненужные методы в сервисах и моделях
- релогинить при смене имейла и запрашивать активацию по новой (срочно)