Skip to main content

Modular FastAPI project management with a Django-inspired workflow.

Project description

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.

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

fastapi_jet-1.2.0.tar.gz (15.8 kB view details)

Uploaded Source

Built Distribution

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

fastapi_jet-1.2.0-py3-none-any.whl (33.6 kB view details)

Uploaded Python 3

File details

Details for the file fastapi_jet-1.2.0.tar.gz.

File metadata

  • Download URL: fastapi_jet-1.2.0.tar.gz
  • Upload date:
  • Size: 15.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for fastapi_jet-1.2.0.tar.gz
Algorithm Hash digest
SHA256 73360d36e4ae004f2f25445a37b2a45e6061396ec44c37a504eb4b4bd9ca3602
MD5 fa756d521f1f828c055d76bde789fa33
BLAKE2b-256 151e0a8347d9c499ebbbd66af8f303f43e8faba1d7e2d050dd0a04bcd6d3cf7a

See more details on using hashes here.

File details

Details for the file fastapi_jet-1.2.0-py3-none-any.whl.

File metadata

  • Download URL: fastapi_jet-1.2.0-py3-none-any.whl
  • Upload date:
  • Size: 33.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for fastapi_jet-1.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 292cd92912a5a3bc389db34a3d34d5e4b1b5bd51f11e858e5a9f7a56012b1831
MD5 2a245efeb744c5c8551d87c46ed2721e
BLAKE2b-256 e558ae5124aae5b782ae17cd4ac067472eff07fbaa11d072955a11c7020a4434

See more details on using hashes here.

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