Flaxon 0.3.0 and Teloce-Py 0.3.0 are available on PyPI. Release instructions are maintained on this site; source links identify the framework snapshot. Check version and upgrade guidance.
CLI Reference
The flaxon command is installed automatically with the framework. Every command that takes an application argument expects it in module:variable form — the Python file (without .py) before the colon, the Flaxon(...) instance's variable name after it. Run these from the directory containing that file, or the app won't be importable.
flaxon --help # list every command
flaxon --version # show the installed Flaxon version
flaxon <command> --help # full options for one command
flaxon run
Starts your app with Uvicorn.
flaxon run app:app --reload
| Flag | Purpose |
|---|---|
--host HOST |
bind address (default 127.0.0.1) |
--port PORT |
bind port (default 8000) |
--reload |
auto-reload on file changes |
--workers N |
number of worker processes |
--log-level LEVEL |
logging verbosity |
--env-file FILE |
load environment variables from a file |
flaxon routes
Lists every registered HTTP and WebSocket route.
$ flaxon routes app:app
Routes for bookstore
Method Path Name
-----------------------------------------
GET / home
GET /books list_books
POST /books create_book
DELETE /books/<int:book_id> delete_book
--format json or --format csv for machine-readable output, --output FILE to save instead of printing.
flaxon doctor
Runs diagnostics against your app: confirms it imports, counts routes, flags missing configuration.
$ flaxon doctor app:app
Flaxon Doctor - bookstore
[PASS] Application imported successfully
[PASS] 4 HTTP route(s) registered
[PASS] 0 WebSocket route(s) registered
[WARN] A strong production SECRET_KEY is not configured.
Result: 1 warning(s), 0 failure(s)
--fix attempts automatic fixes for what it finds.
flaxon new
Scaffolds a modular Flaxon + Teloce welcome application by default, including TypeScript, scoped component styles, a Python API, SQLite migrations, and a protected admin.
After generation, install the project, run python management.py makemigrations and python management.py migrate, and create your administrator with python management.py setup-admin. There is no default password. The generated project also includes flaxon welcome and flaxon welcome-status, registered by its welcome module through flaxon_cli.py. Use --template basic for the smaller API-only starter. See getting started for the complete workflow.
flaxon new my-project
--template NAME picks a starter template, --no-venv skips creating a virtualenv.
flaxon generate
Scaffolds a single component — not a full project.
flaxon generate model Product
flaxon generate controller ProductController
flaxon generate service EmailService
Valid types: controller, schema, service, middleware, model, task. --path DIR sets where it's written (defaults to the current directory).
flaxon docs
Generates an OpenAPI spec by reading your actual routes, endpoint docstrings, and Schema-typed parameters — no manual descriptions required for the basics.
$ flaxon docs app:app --title "Bookstore API"
✓ Wrote OpenAPI spec for 2 path(s) to openapi.json
| Flag | Purpose |
|---|---|
-o, --output FILE |
output path (default openapi.json) |
--title TITLE |
API title (default: your app's name) |
--version VERSION |
API version (default 1.0.0) |
--indent N |
JSON indent width, 0 for compact (default 2) |
--include-internal |
include Flaxon's own system routes (/health, /metrics, /docs, etc.) — excluded by default |
What actually gets extracted, automatically, from your code:
- Summary/description — your endpoint's docstring (first line = summary, rest = description).
- Request body schema — any parameter typed as a Schema subclass gets its fields, types, and constraints (min_length, minimum, etc.) pulled straight from the class definition.
- Path parameters — Flaxon's <int:id>-style converters get correctly typed and converted to OpenAPI's {id} format.
The output is a plain JSON file — hand-edit it afterward for anything auto-detection can't infer (security schemes, examples, descriptions on bare int/str parameters), or just re-run the command to regenerate the parts that come from your code.
flaxon inspect
Shows detailed information about a running app's configuration.
$ flaxon inspect app:app --middleware --config
Application: bookstore
Debug: False
Middleware:
- (<class 'flaxon.middleware.request_id.RequestIDMiddleware'>, {})
- (<class 'flaxon.middleware.security_headers.SecurityHeadersMiddleware'>, {})
Config:
ENV: development
DEBUG: False
SECRET_KEY: None
ALLOWED_HOSTS: ['localhost', '127.0.0.1']
MAX_BODY_SIZE: 10485760
TRUSTED_PROXIES: []
PROXY_HEADERS: ['x-forwarded-for', 'x-forwarded-proto', 'x-forwarded-host']
--middleware / --config toggle those sections; --format {json,yaml,table} controls output format.
flaxon build
Wraps python -m build to produce a wheel and/or sdist for publishing.
flaxon build --format wheel
--format {wheel,sdist,all} (default all), --output DIR for the output directory.
flaxon test
Wraps pytest.
flaxon test
flaxon test tests/test_routing.py --coverage -v
--coverage generates a coverage report, --verbose/-v for verbose output, --keep-env keeps the test environment around after the run. Requires pytest installed (pip install flaxon[dev] covers this).
flaxon shell
Launches a Python REPL with your application already imported and available.
flaxon shell app:app
--no-import skips loading the application, for a plain Python shell.
flaxon migrate
Applies or rolls back database migrations.
flaxon migrate --direction up
flaxon migrate --direction down --target 0003 --dry-run
--direction {up,down}, --target VERSION to migrate to a specific version, --dry-run to preview without applying.
flaxon schedule
Runs your app's scheduled tasks (see flaxon.tasks).
flaxon schedule app:app --once
--once runs due tasks a single time and exits, instead of running continuously.
flaxon worker
Starts a background worker process to consume tasks from a queue (see flaxon.tasks).
flaxon worker app:app --concurrency 4 --queue default
--concurrency N sets how many tasks run at once, --queue NAME picks which queue to consume from.
flaxon --version
Prints the installed version.
$ flaxon --version
Flaxon 0.1.4
Updated starter workflow (next release)
The changes in Flaxon PR #34 require a release containing that PR. They are not included in the published 0.3.0 package. Both the full-stack and basic starters generate requirements.txt instead of pyproject.toml.
After creating the project, use its interpreter directly; activation is optional:
cd my-project
.venv/bin/python -m pip install -r requirements.txt
.venv/bin/python management.py check
.venv/bin/python management.py runserver
On Windows PowerShell:
Set-Location -LiteralPath my-project
.\.venv\Scripts\python.exe -m pip install -r requirements.txt
.\.venv\Scripts\python.exe management.py check
.\.venv\Scripts\python.exe management.py runserver
Run the migrations and administrator setup from the main walkthrough before using the database or Admin. The basic template uses python -m flaxon run app:app --reload instead of management.py.
Slow or interrupted creation
Files appear before setup finishes. Wait for the completion message: Python still needs to create .venv and install its bundled pip. The updated CLI shows these as separate phases, with elapsed progress and a 120-second timeout per phase. Application dependencies download only when you run pip install -r requirements.txt. Disk speed and antivirus scanning may affect environment setup; the CLI cannot guarantee an instant finish.
If setup times out or you cancel it, keep your project files and retry from the parent directory:
python -m flaxon new my-project --resume-venv --venv-timeout 300
Recovery preserves edited sources, also supports older projects containing pyproject.toml, and prints the appropriate install command. Ctrl+C stops the setup process tree. For a new project using an environment you manage yourself:
flaxon new my-project --no-venv
The updated starter disables automatic background type checking; run python management.py typecheck explicitly when needed.
new and version commands do not import the current project's custom CLI module
or application. Other commands still discover custom commands once. Keep
flaxon_cli.py limited to command declarations; import expensive services inside
a command handler.