Интерактивный генератор 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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e806838bd179a370f92d589c474d60c1347424705673aec2f0493da8614b8789
|
|
| MD5 |
4778000c44e8a652743d5353bfeaa76c
|
|
| BLAKE2b-256 |
b3341ded60e732ee66ac900355f1806f9bf27b58cd256b99c1551d18edcb3ec2
|
File details
Details for the file fa_template_cli-0.1.1-py3-none-any.whl.
File metadata
- Download URL: fa_template_cli-0.1.1-py3-none-any.whl
- Upload date:
- Size: 27.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
41bd6e1653974756c40fa5c7c0478239565510244dc062c3b8e719600e9cc709
|
|
| MD5 |
0857990901238e6e126a753478bb5167
|
|
| BLAKE2b-256 |
847a68e551bb182103f1198b8455745bae20ee8fc5e72ac4fa2d4df51799c7e0
|