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.0). 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.0
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.0.tar.gz | 582.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| aso-0.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 1.0 MB
Release files / aso-0.2.0.tar.gz
| Download URL | aso-0.2.0.tar.gz |
|---|---|
| Size | 582.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
600315cc15dbe0626d4133a5b272b232428bb22b27c0c8be6f0d58853be59a33
|
|
BLAKE2b-256 checksum How to use checksums |
77f675cf5d7703eb3d7a3fc56b18209d0691872bb23190e7dd94a277b837bbcd
|
| 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.0-py3-none-any.whl
| Download URL | aso-0.2.0-py3-none-any.whl |
|---|---|
| Size | 420.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
fdd84c416afd1a87ca6b5082f6d2d672a5d6ecbe3770704c8e643cca61d69751
|
|
BLAKE2b-256 checksum How to use checksums |
129ddf7ff4959e94a0e678fc24e045ac7d3129d82c0391168a323d3ab1cdc5ce
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.12
|