Skip to main content

A CLI to generate a FastAPI + Alembic + SQLAlchemy boilerplate

Project description

Animated_Logo_GIF_Creation-ezgif com-video-to-gif-converter

The high-performance, drift-ready boilerplate for FastAPI.

Hatchback is a powerful CLI tool designed to bootstrap and manage production-ready FastAPI applications. It comes pre-loaded with best practices, security hardening, and a modular architecture that scales.

โœจ Features

  • ๐Ÿš€ Production Ready: SQLAlchemy 2.0, Pydantic v2, and Alembic pre-configured.
  • ๐Ÿ›ก๏ธ Secure by Default: Rate limiting (SlowAPI), hardened Auth (JWT), secure secret generation, and non-root Docker containers.
  • โšก Blazing Fast: Optional uv support for lightning-fast dependency management.
  • ๐Ÿ—๏ธ Clean Architecture: Service-Repository pattern for maintainable code.
  • โœ… Testing Ready: Integrated pytest setup with hbk test.
  • ๐Ÿณ Dockerized: Ready-to-deploy docker-compose setup with healthchecks.
  • ๐Ÿค– AI-Powered: Built-in Agent Skills for GitHub Copilot and VS Code agent mode.
  • ๐ŸŽ๏ธ Drift Mode: A CLI that drives as good as it looks.

๐Ÿ“ฆ Installation

pip install hatchback

Tip: Use hbk as a shortcut for hatchback โ€” all commands work with either. For example, hbk make product is equivalent to hatchback make product.

๐Ÿ Quick Start

1. Initialize a new project

hbk init my_project_name

You will be prompted for:

  • Database Name
  • Docker inclusion
  • uv usage (if installed, for faster setup)

Options:

  • --use-uv: Force usage of uv for virtualenv creation.
  • --no-docker: Skip Docker file generation.

2. Start the Engine

Before hitting the gas, ensure your database is running and the schema is initialized.

1. Start Database:

cd my_project_name
docker-compose up -d db

(Or configure a local Postgres instance in .env)

2. Initialize Database: Create and apply the first migration for the built-in models (User, Tenant).

hbk migrate create -m "initial_setup"
hbk migrate apply

3. Run Server: Start the development server with hot-reloading.

hbk run

๐ŸŽ‰ Success! Your API is now live.

3. Scaffold Resources

Don't write boilerplate. Generate Models, Schemas, Repositories, Services, and Routes in one go. Hatchback automatically registers your new routes and services, so they are ready to use immediately.

hbk make product

4. Remove Resources

Changed your mind? Remove a scaffolded resource and clean up all imports automatically.

hbk remove product          # asks for confirmation
hbk remove product --force  # skips confirmation

5. Manage Migrations

Wrapper around Alembic to keep your database in sync.

# Create a migration
hbk migrate create -m "add products table"

# Apply migrations
hbk migrate apply

# Rollback the last migration
hbk migrate downgrade

# Rollback multiple steps
hbk migrate downgrade -r -2

# Rollback everything
hbk migrate downgrade -r base

6. Seed Data

Populate your database with initial data (default tenant and admin user).

hbk seed

7. Import Existing Database

Have an existing database? Hatchback can inspect it and generate your entire project architecture automatically.

# Output models only to a file
hbk inspect --url postgresql://user:pass@localhost:5432/mydb --output app/models/legacy.py

# Full Scaffold Mode (Recommended)
# Generates Models, Services, Repositories, Schemas, and Routes for every table
hbk inspect --scaffold --url postgresql://user:pass@localhost:5432/mydb

8. Upgrade Existing Projects

After upgrading Hatchback, sync the latest agent skills and infrastructure files into your project.

pip install --upgrade hatchback
hbk upgrade

This syncs new files (like agent skills) without touching your Docker config, user code, or environment files.

9. Run Tests

Hatchback projects come with pytest configured.

hbk test

๐Ÿ—๏ธ Architecture Explained

Hatchback follows a Service-Repository pattern to keep your code modular and testable.

  1. Routes (app/routes/): Handle HTTP requests/responses and dependency injection. They delegate business logic to Services.
  2. Services (app/services/): Contain the business logic. They orchestrate data operations using Repositories.
  3. Repositories (app/repositories/): Handle direct database interactions (CRUD). They abstract the SQL/ORM details from the rest of the app.
  4. Models (app/models/): SQLAlchemy database definitions.
  5. Schemas (app/schemas/): Pydantic validation and serialization schemas.

๐Ÿค– Agent Skills

Hatchback projects ship with built-in Agent Skills in .github/skills/:

  • hatchback โ€” Full project overview, CLI commands, database config, auth system, and conventions.
  • clean-architecture โ€” Layered architecture rules, code examples, anti-patterns, and testing patterns.

These help AI coding assistants (GitHub Copilot, VS Code agent mode) understand your project structure and follow established patterns automatically.

๐Ÿ“‚ Project Structure

my_project/
โ”œโ”€โ”€ .github/
โ”‚   โ””โ”€โ”€ skills/       # Agent Skills for AI assistants
โ”œโ”€โ”€ app/
โ”‚   โ”œโ”€โ”€ config/       # Database, Security, Limiter config
โ”‚   โ”œโ”€โ”€ models/       # SQLAlchemy Database Models
โ”‚   โ”œโ”€โ”€ schemas/      # Pydantic Data Schemas
โ”‚   โ”œโ”€โ”€ repositories/ # Data Access Layer (CRUD)
โ”‚   โ”œโ”€โ”€ services/     # Business Logic
โ”‚   โ”œโ”€โ”€ routes/       # API Endpoints
โ”‚   โ”œโ”€โ”€ dependencies.py
โ”‚   โ””โ”€โ”€ main.py
โ”œโ”€โ”€ alembic/          # Database Migrations
โ”œโ”€โ”€ tests/            # Pytest Suite
โ”œโ”€โ”€ docker-compose.yml
โ””โ”€โ”€ requirements.txt

๐Ÿ›ก๏ธ Security Features

  • Rate Limiting: Built-in protection against brute-force attacks.
  • Secure Headers: Trusted host middleware configuration.
  • Password Hashing: Argon2/Bcrypt support via Passlib.
  • Docker Security: Runs as a non-root user to prevent container breakout.

๐Ÿ”ง CLI Reference

Command Description
hbk init <name> Initialize a new project
hbk run Start dev server with hot-reload
hbk make <resource> Scaffold a new resource
hbk remove <resource> Remove a resource and clean up imports
hbk migrate create -m "msg" Create a new Alembic migration
hbk migrate apply Apply pending migrations
hbk migrate downgrade Rollback last migration (-r -2 for multiple)
hbk seed Seed database with initial data
hbk inspect --url <db_url> Inspect existing DB and generate models
hbk upgrade Sync latest skills and infra files
hbk test Run the test suite

Built with ๐Ÿ’– and ๐ŸŽ๏ธ by Ignacio Bares(nachovoss) and the Hatchback Team.

Support

Hatchback is an open-source project. If you'd like to support the development, you can donate via Bitcoin:

BTC Address: \bc1q9fznxyf0skq8ux5ysrggw3veuqf92xtr25cccq\

Bitcoin QR Code

Thank you for your support!

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

hatchback-0.1.11.tar.gz (49.5 kB view details)

Uploaded Source

Built Distribution

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

hatchback-0.1.11-py3-none-any.whl (65.7 kB view details)

Uploaded Python 3

File details

Details for the file hatchback-0.1.11.tar.gz.

File metadata

  • Download URL: hatchback-0.1.11.tar.gz
  • Upload date:
  • Size: 49.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for hatchback-0.1.11.tar.gz
Algorithm Hash digest
SHA256 8dfa791273a2016f966fd7df341d3d8f87bfb0a518cbd9ca81a99a5e840e167c
MD5 cb508488f6fcfccb58aa451e63375380
BLAKE2b-256 63f9020953c9fe4f965bb85cad31cf9e86854647b33cc7f55b8caa6c8cf08a8e

See more details on using hashes here.

Provenance

The following attestation bundles were made for hatchback-0.1.11.tar.gz:

Publisher: publish.yml on nachovoss/hatchback

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file hatchback-0.1.11-py3-none-any.whl.

File metadata

  • Download URL: hatchback-0.1.11-py3-none-any.whl
  • Upload date:
  • Size: 65.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for hatchback-0.1.11-py3-none-any.whl
Algorithm Hash digest
SHA256 87223b3e5e8c684b33df960fa09997a533baac0b2823ae800b3e3a1905d0cfdb
MD5 9bf8dbc6b3177cf47df6788882875a33
BLAKE2b-256 b81fc96931f1f4640736976230a963830646f152aa34a73211a29acb393f2d60

See more details on using hashes here.

Provenance

The following attestation bundles were made for hatchback-0.1.11-py3-none-any.whl:

Publisher: publish.yml on nachovoss/hatchback

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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