Skip to main content

Интерактивный генератор FastAPI-проектов (Copier-based)

Project description

fa-template-cli

Генератор FastAPI-проектов с готовой авторизацией, миграциями и логированием — чтобы не копипастить один и тот же boilerplate в очередной раз.

Зачем это

Когда начинаешь новый FastAPI-проект, почти всегда нужно одно и то же: JWT-аутентификация с refresh-токенами, миграции через Alembic, подключение к БД, немного логирования. Обычно это тащится копипастой из предыдущего проекта, а потом полдня уходит на то, чтобы вычистить то, что в этот раз не нужно — например, email-верификацию или лишний драйвер БД.

fa-template-cli убирает это ручное вычищение. При запуске fa-template init вам задают несколько вопросов, и итоговый проект собирается сразу под ответы: не нужна email-верификация — значит, в проекте не будет ни email.py, ни зависимости aiosmtplib, ни соответствующего эндпоинта, ни лишнего поля в модели пользователя. Под капотом — Copier, так что сгенерированный проект в будущем можно будет обновить до новой версии шаблона через copier update, не перенося правки руками.

Установка

Это CLI-инструмент, поэтому логичнее ставить его через pipx — тогда команда fa-template будет доступна из любой папки, а не только внутри одного venv:

pipx install fa-template-cli

Обычный pip install fa-template-cli тоже работает, если вам так удобнее.

Быстрый старт

fa-template init my_project
cd my_project

python -m venv env
source env/Scripts/activate   # на Linux/macOS: source env/bin/activate

pip install -r requirements.txt
cp .env.example .env          # поправьте SECRET_KEY и DATABASE_URL при необходимости

uvicorn app.main:app --reload

Готово — на http://localhost:8000/docs уже открыта живая Swagger-документация с эндпоинтами регистрации, логина и обновления токена.

Вопросы при init

Вопрос На что влияет
project_slug имя проекта, используется и как имя пакета в некоторых URL по умолчанию
app_name отображаемое имя приложения (APP_NAME в .env)
database sqlite / postgres / mysql — определяет драйвер в requirements.txt и дефолтный DATABASE_URL
use_logging включать ли loguru: без него в проекте вообще не будет модуля логирования
use_email_verification нужна ли верификация email при регистрации (SMTP, эндпоинт verify-email, поле is_verified)
secret_key ключ для подписи JWT — значение из ответа сразу попадает в .env.example

Что уже реализовано в сгенерированном проекте

  • FastAPI на асинхронном SQLAlchemy 2.0
  • JWT-аутентификация: access-токен + refresh-токен с ротацией. Refresh-токен в базе хранится не в открытом виде, а как SHA-256-хэш
  • Alembic-миграции, которые применяются автоматически при старте приложения (alembic upgrade head в lifespan)
  • Опционально — email-верификация регистрации: если SMTP не настроен, ссылка для подтверждения просто уходит в лог, чтобы не блокировать разработку
  • Опционально — логирование через loguru с отдельным файлом под письма и отдельным под всё остальное
  • scripts/create_admin.py для создания или назначения администратора из консоли
  • Готовые скрипты переноса данных с SQLite на PostgreSQL/MySQL — если стартовали на SQLite и решили вырасти

Требования

Python 3.10+.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

fa_template_cli-0.1.1.tar.gz (14.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

fa_template_cli-0.1.1-py3-none-any.whl (27.5 kB view details)

Uploaded Python 3

File details

Details for the file fa_template_cli-0.1.1.tar.gz.

File metadata

  • Download URL: fa_template_cli-0.1.1.tar.gz
  • Upload date:
  • Size: 14.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.5

File hashes

Hashes for fa_template_cli-0.1.1.tar.gz
Algorithm Hash digest
SHA256 e806838bd179a370f92d589c474d60c1347424705673aec2f0493da8614b8789
MD5 4778000c44e8a652743d5353bfeaa76c
BLAKE2b-256 b3341ded60e732ee66ac900355f1806f9bf27b58cd256b99c1551d18edcb3ec2

See more details on using hashes here.

File details

Details for the file fa_template_cli-0.1.1-py3-none-any.whl.

File metadata

File hashes

Hashes for fa_template_cli-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 41bd6e1653974756c40fa5c7c0478239565510244dc062c3b8e719600e9cc709
MD5 0857990901238e6e126a753478bb5167
BLAKE2b-256 847a68e551bb182103f1198b8455745bae20ee8fc5e72ac4fa2d4df51799c7e0

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page