Aso
The Aso framework is a Laravel-style web framework for Python: FastAPI on the backend,
Inertia.js v3 + React on the frontend, and an artisan-like CLI (aso make:controller,
aso migrate, ...).
Status: early (0.2.1). It works end to end, but expect rough edges and breaking changes. Versions up to 0.1.1 were published as
fastogram; that package is retired. The previous Telegram bot template (0.0.x, FastAPI + aiogram) is kept under the taglegacy-telegram-templateand on therelease/public-readybranch.
Try it
You need uv, Node 22+ and npm.
uvx aso new myapp # like `laravel new myapp`
cd myapp
uv run aso dev # server + Vite + route watcher
Open http://127.0.0.1:8000, register, and you're in the React starter kit (dashboard, settings,
password reset, email verification). In local mode mail goes to storage/logs/.
Useful commands: aso list, aso route:list, aso make:model Post -mcr,
aso migrate, uv run pytest.
What it looks like
# routes/web.py
with Route.middleware("auth").group():
Route.get("/posts", [PostController, "index"]).name("posts.index")
Route.post("/posts", [PostController, "store"]).name("posts.store")
# app/http/controllers/post_controller.py
class PostController(Controller):
async def index(self):
return inertia("posts/index", {"posts": await Post.with_("author").latest().paginate(15)})
async def store(self, form: StorePostRequest):
await Post.create(**form.validated(), user_id=auth().id())
return redirect().route("posts.index").with_flash("success", "Post created.")
Repository layout
src/aso/ the framework library and CLI (published to PyPI as `aso`)
skeleton/ the app that `aso new` creates (like laravel/laravel)
tests/ the framework's own tests
spikes/ Phase 0 proof-of-concept spikes (throwaway)
License
MIT
Metadata
Release files for aso 0.2.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| aso-0.2.1.tar.gz | 585.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| aso-0.2.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 1.0 MB
Release files / aso-0.2.1.tar.gz
| Download URL | aso-0.2.1.tar.gz |
|---|---|
| Size | 585.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
062da76d0314fc728d186939911fa137b94db4dbd0901ad00e91659e2d0aea3d
|
|
BLAKE2b-256 checksum How to use checksums |
3d15519afde94a118b088b48a590d471b27600f74320a5b0c413dcddcd5e330f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.12
|
Release files / aso-0.2.1-py3-none-any.whl
| Download URL | aso-0.2.1-py3-none-any.whl |
|---|---|
| Size | 424.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
e0f3730f479c363fdd4d8e8420861924c94222da84cd1be180d71007553b609c
|
|
BLAKE2b-256 checksum How to use checksums |
a95ba469f1e0dd93c151e02f31410211e9e28d0cb9afb7e1a00d24b68f6f7c42
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.12
|