Skip to content

fastkit-org/fastkit-cli

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

111 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FastKit CLI

PyPI version Python 3.11+ CI License: MIT

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


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.

About

FastKit - Command-line tool for scaffolding projects and generating code

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors