Flaxon
Author: Aldane Hutchinson
Flaxon is an async-first ASGI framework for JSON APIs, WebSockets, and server-rendered applications. It provides the HTTP boundary; you choose the database, frontend, queue, and deployment platform.
Status: Production/stable.
Install
Flaxon requires Python 3.11 or newer.
pip install "flaxon[standard]"
standard installs the recommended ASGI server and template dependencies. For
framework development, install pip install -e ".[standard,dev]" instead.
Your first API
Create app.py:
from flaxon import Flaxon
app = Flaxon("hello-api", debug=True)
@app.get("/")
async def home():
return {"message": "Hello from Flaxon"}
@app.get("/users/<int:user_id>")
async def get_user(user_id: int):
return {"id": user_id, "name": "Example User"}
Start the development server:
flaxon run app:app --reload
Open http://127.0.0.1:8000/. For a production process, use flaxon run
without --reload or run the same ASGI application with Uvicorn.
Validate JSON input
Use Schema parameters for JSON request bodies. Field names use the full
*Field spelling.
from flaxon.validation import Schema, fields
class CreateUser(Schema):
name = fields.StrField(required=True, min_length=2, max_length=80)
email = fields.EmailField(required=True)
age = fields.IntField(minimum=13, maximum=120)
@app.post("/users")
async def create_user(data: CreateUser):
return {"user": data.to_dict()}
Available field classes are StrField, IntField, FloatField, BoolField,
EmailField, DateField, DateTimeField, DecimalField, UUIDField,
ListField, ChoiceField, NestedField, and AnyField.
WebSockets
from flaxon.websocket import WebSocket
@app.websocket("/ws/chat/<room_id>")
async def chat(socket: WebSocket, room_id: str):
await socket.accept()
await socket.join(room_id)
try:
async for message in socket.iter_json():
await socket.broadcast_json(room_id, {"event": "chat.message", "data": message})
finally:
await socket.leave(room_id)
The default room manager is in-process. Use shared infrastructure for cross-worker or multi-instance broadcasts.
Server-rendered HTML with Jinax
Install the template extra if it is not already included through standard:
pip install "flaxon[templates]"
from flaxon.jinax import Jinax
app.use_templates(Jinax("templates", auto_reload=True))
@app.get("/")
async def home(request):
return await request.render("home.html", {"title": "Welcome"})
Jinax uses Jinja2 autoescaping for HTML templates. Only mark content safe when it has been produced by a trusted sanitizer.
What Flaxon includes
- HTTP routing, typed path parameters, request parsing, responses, and streams.
- Schema validation and validation decorators.
- Middleware for CORS, request IDs, security headers, trusted hosts, body limits, compression, logging, recovery, sessions, and timeouts.
- Sessions, JWT, API keys, authentication, roles, permissions, CSRF, and rate limiting.
- WebSocket routes, JSON messaging, rooms, and broadcast helpers.
- Jinax templates, caching helpers, database adapters/transactions, background tasks, plugins, OpenAPI, GraphQL, health checks, and metrics.
TestClientandAsyncWebSocketClientfor application tests.
Documentation and examples
The runnable example applications live in docs/examples/: a basic API,
React backend, Android backend, and Jinax site.
Production checklist
- Set
DEBUG=Falseand a strongFLAXON_SECRET_KEY. - Use explicit allowed origins and trusted hosts.
- Run multiple workers only after moving shared state (sessions, cache, task coordination, and WebSocket fan-out) to durable/shared infrastructure.
- Run behind TLS and a reverse proxy or managed load balancer.
- Add database migrations, backups, health checks, metrics, structured logs, and load tests for your deployment topology.
See the deployment guide for the complete checklist.
Contributing
git clone https://github.com/aldanedev-create/Flaxon-Backend-Framework.git
cd Flaxon-Backend-Framework
python -m venv .venv
# Activate the environment, then:
pip install -e ".[standard,dev]"
pytest
Flaxon is released under the MIT License.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file flaxon-0.2.3.tar.gz.
File metadata
- Download URL: flaxon-0.2.3.tar.gz
- Upload date:
- Size: 285.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ce667f900b4bc95883e87a16741aaa3b6d663cdc738ac25ad838a19dd936df20
|
|
| MD5 |
6aa0d0445e7f32df6b8e3a03dfd664cd
|
|
| BLAKE2b-256 |
6c555a5eadef510d08123b67cab3b2c2c026cda2517d11e66b1da39982319f85
|
File details
Details for the file flaxon-0.2.3-py3-none-any.whl.
File metadata
- Download URL: flaxon-0.2.3-py3-none-any.whl
- Upload date:
- Size: 360.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c10eee8bceef4c85358f88d0a54fb5e104301a4580b2de9891fc5348b38d0528
|
|
| MD5 |
596f3a5863b7b372f6012809bc34d95e
|
|
| BLAKE2b-256 |
1718faa483981fc2a50a8137a9985c8cfc5605bbb854a2c40c7076ac4a528419
|