Шаблон для создания приложений на основном стеке FastAPI, SQLAlchemy, Alembic
-
Установка Poetry. При проблемах ищите решения:
На
Windows
в PowerShell:(Invoke-WebRequest -Uri https://install.python-poetry.org -UseBasicParsing).Content | py -
На
MacOS/Lunix
curl -sSL https://install.python-poetry.org | python3 -
-
Добавьте в переменную PATH. После установки есть подсказки как это сделать разными способами.
Например в Windows
C:\Users\<ВашеИмя>\AppData\Roaming\Python\Scripts
Система -> О программе -> Дополнительные параметры системы -> Дополнительно -> Переменные среды -> Path
-
В терминале ввести
poetry config virtualenvs.in-project true
чтобы .venv окружение создавалось внутри проекта -
Выполните:
poetry install --no-root
чтобы установить зависимости, указанные в файле pyproject.toml -
В
PyCharm
откройтеFile -> Settings -> Project: <ProjectName> -> Python Interpreter
-
Нажмите
Add Interpreter
и выберитеPoetry Environment
-
В разделе
Existing Environment
укажите путь кpython.exe
в папке.venv
проекта -
Запустить сервер
uvicorn main:app --reload
из директорииbackend
P.S. Если проект новый и файл pyproject.toml отсутствует, выполните: poetry init
Данный шаблон построен на основе актуальных практик 2024 года и использует паттерн Repository
В некоторых файлах можно встретить базовый код (/backend/core/config.py
к примеру)
- FastAPI: Фреймворк для создания API.
- SQLAlchemy: ORM для работы с базой данных.
- Alembic: Инструмент для управления миграциями.
- Pydantic: Работа с типами и валидацией данных.
- Poetry: Управление зависимостями и виртуальными окружениями.
- Docker: Контейнеризация приложения.
- Redis: Опционально для кэширования.
- Ruff: Линтер/Форматтер с настройками в pyproject.toml
- Black: Форматтер с настройками в pyproject.toml
- Всё что нужно для работы с PostgreSQL, и aiosqlite (sync/async).
- Библиотеки для тестирования: pyTest, httpx.
- Подробнее в pyproject.toml
Шаблон имеет следующую структуру:
fastapi-template/
├── alembic/ # Каталог миграций Alembic
│ ├── versions/ # Каталог с файлами миграций
│ ├── env.py # Основной файл конфигурации Alembic
│ └── script.py.mako # Шаблон для новых миграций
├── backend/
│ ├── __init__.py
│ ├── main.py # Точка входа FastAPI
│ ├── api/ # Каталог с API маршрутами
│ ├── core/ # Конфигурации и основные утилиты
│ ├── models/ # SQLAlchemy модели
│ ├── repositories/ # Репозитории для работы с БД
│ ├── schemas/ # Pydantic схемы
│ ├── services/ # Бизнес-логика
│ └── tests/ # Тесты
├── frontend/ # По желанию
├── nginx/ # Под Nginx конфигурацию
├── .env # Переменные окружения
├── pyproject.toml # Poetry конфигурация