FastAPI with structure and developer experience.
FastKit CLI is a code generation tool for the FastKit ecosystem. It generates complete, production-ready modules for FastAPI projects — models, schemas, repositories, services, and routers — in seconds.
Inspired by Laravel's
php artisan, built for FastAPI developers who want structure without the overhead.
Requirements
- Python 3.12
- fastkit-core
Installation
pip install fastkit-cli
Or with uv (recommended):
uv add fastkit-cli
Verify the installation:
fastkit --help
Quickstart
Generate a complete module
fastkit make module Invoice
This generates the following structure:
modules/
└── invoices/
├── __init__.py
├── models.py
├── schemas.py
├── repository.py
├── service.py
└── router.py
With a confirmation and next steps:
Generating module: Invoice
Location : modules/invoices/
Model : Invoice
Table : invoices
Mode : sync
✓ __init__.py
✓ models.py
✓ schemas.py
✓ repository.py
✓ service.py
✓ router.py
✓ Registered model in alembic/env.py
Done! Next steps:
1. Define your fields in modules/invoices/models.py
2. Add schemas in modules/invoices/schemas.py
3. Run: fastkit migrate make -m 'create_invoices'
Generate an async module
fastkit make module Invoice --async
Generates the same structure but with async repository, service, and router using AsyncSession and get_async_db.
make
fastkit make module
Generates a complete module with all layers.
fastkit make module <Name> [OPTIONS]
| Option | Short | Default | Description |
|---|---|---|---|
--dir |
-d |
modules |
Root directory for modules |
--async |
-a |
False |
Use async repository, service, and router |
--force |
-f |
False |
Overwrite existing files |
Examples:
# Basic usage
fastkit make module Invoice
# Async mode
fastkit make module Invoice --async
# Custom directory
fastkit make module Invoice --dir src/modules
# Compound name (automatically converted)
fastkit make module InvoiceItem
# Overwrite existing files
fastkit make module Invoice --force
fastkit make model
Generates only the SQLAlchemy model file.
fastkit make model <Name> [OPTIONS]
| Option | Short | Default | Description |
|---|---|---|---|
--path |
-p |
. |
Target directory |
--force |
-f |
False |
Overwrite existing file |
Examples:
fastkit make model Invoice
fastkit make model Invoice --path modules/invoices
Generated models.py:
from fastkit_core.database import BaseWithTimestamps, IntIdMixin
# from fastkit_core.database import UUIDMixin, SoftDeleteMixin, SlugMixin
class Invoice(BaseWithTimestamps, IntIdMixin):
__tablename__ = "invoices"
# Define your fields here
fastkit make schema
Generates only the Pydantic schemas file.
fastkit make schema <Name> [OPTIONS]
| Option | Short | Default | Description |
|---|---|---|---|
--path |
-p |
. |
Target directory |
--force |
-f |
False |
Overwrite existing file |
Examples:
fastkit make schema Invoice
fastkit make schema Invoice --path modules/invoices
Generated schemas.py:
from fastkit_core.validation import BaseSchema
class InvoiceCreate(BaseSchema):
pass # Define your fields here
class InvoiceUpdate(BaseSchema):
pass # All fields optional for partial updates
class InvoiceResponse(BaseSchema):
id: int
model_config = {"from_attributes": True}
fastkit make repository
Generates only the repository file.
fastkit make repository <Name> [OPTIONS]
| Option | Short | Default | Description |
|---|---|---|---|
--path |
-p |
. |
Target directory |
--async |
-a |
False |
Use async repository |
--force |
-f |
False |
Overwrite existing file |
Examples:
fastkit make repository Invoice
fastkit make repository Invoice --async
fastkit make repository Invoice --path modules/invoices
fastkit make service
Generates only the service file.
fastkit make service <Name> [OPTIONS]
| Option | Short | Default | Description |
|---|---|---|---|
--path |
-p |
. |
Target directory |
--async |
-a |
False |
Use async service |
--force |
-f |
False |
Overwrite existing file |
Examples:
fastkit make service Invoice
fastkit make service Invoice --async
fastkit make router
Generates only the router file with full CRUD endpoints.
fastkit make router <Name> [OPTIONS]
| Option | Short | Default | Description |
|---|---|---|---|
--path |
-p |
. |
Target directory |
--async |
-a |
False |
Use async router |
--force |
-f |
False |
Overwrite existing file |
Examples:
fastkit make router Invoice
fastkit make router Invoice --async
Generated endpoints:
GET /invoices → index (paginated list)
GET /invoices/{id} → show
POST /invoices → store
PUT /invoices/{id} → update
DELETE /invoices/{id} → destroy
migrate
Wrapper around Alembic migrations.
fastkit migrate run
Run all pending migrations.
fastkit migrate run
# Equivalent to: alembic upgrade head
fastkit migrate make
Generate a new migration based on model changes.
fastkit migrate make -m "create_invoices"
# Equivalent to: alembic revision --autogenerate -m "create_invoices"
| Option | Short | Required | Description |
|---|---|---|---|
--message |
-m |
Yes | Migration description |
fastkit migrate rollback
Rollback the last migration.
fastkit migrate rollback
# Equivalent to: alembic downgrade -1
fastkit migrate status
Show the current migration status.
fastkit migrate status
# Equivalent to: alembic current
db seed
Run database seeders.
# Run all seeders
fastkit db seed
# Run a specific seeder
fastkit db seed UserSeeder
server
Start the FastAPI development server.
fastkit server
| Option | Short | Default | Description |
|---|---|---|---|
--host |
-h |
0.0.0.0 |
Host to bind |
--port |
-p |
8000 |
Port to bind |
--reload / --no-reload |
True |
Enable auto-reload |
Examples:
# Default
fastkit server
# Custom host and port
fastkit server --host 127.0.0.1 --port 9000
# Without auto-reload
fastkit server --no-reload
Naming Conventions
FastKit CLI automatically handles naming conversions regardless of how you pass the module name:
| Input | Model | Snake | Table | Folder |
|---|---|---|---|---|
Invoice |
Invoice |
invoice |
invoices |
invoices |
invoice |
Invoice |
invoice |
invoices |
invoices |
InvoiceItem |
InvoiceItem |
invoice_item |
invoice_items |
invoice_items |
invoice_item |
InvoiceItem |
invoice_item |
invoice_items |
invoice_items |
Category |
Category |
category |
categories |
categories |
Typical Workflow
# 1. Generate a new module
fastkit make module Invoice --async
# 2. Define your model fields
# Edit modules/invoices/models.py
# 3. Define your schemas
# Edit modules/invoices/schemas.py
# 4. Generate and run migration
fastkit migrate make -m "create_invoices"
fastkit migrate run
# 5. Register the router in your main app
# In app.py:
# from modules.invoices.router import router as invoices_router
# app.include_router(invoices_router, prefix="/api/v1")
# 6. Start the server
fastkit server
Related Packages
- fastkit-core — Base classes, repository pattern, validation, i18n
- mailbridge — Email delivery abstraction
License
FastKit Core is open-source software licensed under the MIT License.
Built by Fastkit.org
FastKit is developed and maintained by Fastkit.org for the FastAPI community.
Release files for fastkit-cli 0.2.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| fastkit_cli-0.2.3.tar.gz | 12.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| fastkit_cli-0.2.3-py3-none-any.whl | Python 3 | none | any | Details |
Total release size:31.7 kB
Release files / fastkit_cli-0.2.3.tar.gz
| Download URL | fastkit_cli-0.2.3.tar.gz |
|---|---|
| Size | 12.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
4b675e3961c4d8ae79cea24243cc1a17fdb826c907602e243c1910da5fb710e8
|
|
BLAKE2b-256 checksum How to use checksums |
847229fc91a6974a96788a5872ef7298f358ae080125274a9155287d58d0cf7c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on May 4, 2026.
Transparency logRelease files / fastkit_cli-0.2.3-py3-none-any.whl
| Download URL | fastkit_cli-0.2.3-py3-none-any.whl |
|---|---|
| Size | 19.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
e24a66031dae4d8aa32f0b92021f704adb9afa2ee3255f845a6c7dd7bf8cfe5a
|
|
BLAKE2b-256 checksum How to use checksums |
3bb2b10a3ec515cfc30eaa51677dca33bf16aa33f1b4cd6f00cdf97e4005752d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on May 4, 2026.
Transparency log