Skip to main content

FastAPI-Jet

Django's structure. FastAPI's speed.

Package version Downloads Supported Python versions Telegram

What is FastAPI-Jet?

FastAPI-Jet helps you build and manage modular, multi-app FastAPI projects with a familiar, Django-inspired workflow.

It is not a full-stack generator. It is a structure and CLI tool for teams who want clear app boundaries and commands that stay useful after day one.

Who is it for?

  • Teams outgrowing a single main.py
  • Developers coming from Django who want startproject / startapp
  • Tech leads defining a consistent FastAPI layout

Quick start

pip install fastapi-jet

# Create a project
fastjet startproject myapi
cd myapi

# Install and run (generated project is self-contained)
pip install -e ".[dev]"
fastjet runserver

Visit http://127.0.0.1:8000/docs — you'll see a /health endpoint and a sample core app at /core/.

CLI commands

Command Description
fastjet startproject <name> Create a modular project skeleton
fastjet startapp <name> Add a new app under apps/
fastjet startapp <name> --crud App with schemas, services, dependencies
fastjet startapp <name> --versioned /v1/<name> prefix pattern
fastjet startapp <name> --register Auto-add to INSTALLED_APPS (AST-safe)
fastjet runserver Run the dev server (Uvicorn)
fastjet apps List registered apps
fastjet routes Show the full route map (tags, deps)
fastjet check Validate structure, imports, and settings
fastjet shell REPL with app and settings loaded

Aliases: fastapi-jet and fastjet.

Project layout

myapi/
├── base/
│   ├── main.py       # FastAPI app + INSTALLED_APPS
│   ├── core.py       # Settings
│   └── routing.py    # Router registration (no runtime jet dependency)
├── apps/
│   └── core/         # Sample app included in new projects
├── tests/
├── pyproject.toml
└── .fastapi-jet      # Project marker

Adding a feature

fastjet startapp users
fastjet startapp billing --crud --register
fastjet startapp api --versioned

With --register, the app is added to INSTALLED_APPS in base/main.py automatically (AST-safe). Without it, the CLI prints the line to paste manually.

Register manually in base/main.py if you prefer:

INSTALLED_APPS: list[AppRoute] = [
    AppRoute(name="core", prefix="/core", tags=["core"]),
    AppRoute(name="users", prefix="/users", tags=["users"]),
]

Then inspect your API:

fastjet routes

What FastAPI-Jet is not

  • Not a "generate my entire SaaS" tool — try fastapi-forge or fastapi-spawn
  • Not zero-opinion raw FastAPI — use FastAPI directly if you want no structure
  • Not schema-first codegen — try feathers

See CONTRIBUTING.md and docs/CONVENTIONS.md for app layer structure and workflow.

Contributing

Contributions are welcome. Before opening a PR:

pip install -e .
pip install pytest ruff pre-commit
ruff check .
pytest
pre-commit run --all-files

See .cursor/rules/fastapi-jet.mdc for project conventions.

License

MIT — see LICENSE.

Acknowledgements

Inspired by Django's project/app model and the manage-fastapi project.

Metadata

Release files for fastapi-jet 1.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for fastapi-jet 1.2.0
File Size Uploaded
fastapi_jet-1.2.0.tar.gz 15.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for fastapi-jet 1.2.0
File Interpreter ABI Platform
fastapi_jet-1.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 49.3 kB

Release files / fastapi_jet-1.2.0.tar.gz

Download URL fastapi_jet-1.2.0.tar.gz
Size 15.8 kB
Tags Source
SHA-256 checksum
How to use checksums
73360d36e4ae004f2f25445a37b2a45e6061396ec44c37a504eb4b4bd9ca3602
BLAKE2b-256 checksum
How to use checksums
151e0a8347d9c499ebbbd66af8f303f43e8faba1d7e2d050dd0a04bcd6d3cf7a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.13

Release files / fastapi_jet-1.2.0-py3-none-any.whl

Download URL fastapi_jet-1.2.0-py3-none-any.whl
Size 33.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
292cd92912a5a3bc389db34a3d34d5e4b1b5bd51f11e858e5a9f7a56012b1831
BLAKE2b-256 checksum
How to use checksums
e558ae5124aae5b782ae17cd4ac067472eff07fbaa11d072955a11c7020a4434
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.13

Release history Release notifications | RSS feed

This release

1.2.0 This release

2 release files

1.1.5

2 release files

1.1.4

2 release files

1.1.3

2 release files

1.1.2

2 release files

1.1.1

2 release files

1.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page