Bino full-stack framework CLI - Python backend + Rust/SWC React SSR
Project description
🚀 Tavo
Tavo is a modern full-stack framework CLI that combines:
- ⚡ Python backend (FastAPI/Starlette base)
- 🦀 Rust + SWC powered SSR for React (with App Router support)
- 🔥 Client hydration & HMR with no Node.js required
- 🛠️ CLI scaffolding for apps, routes, components, and APIs
Think of it as Laravel Breeze + React + Python but lighter, faster, and developer-friendly.
✨ Features
- SSR with React App Router (layouts, nested routes,
use client) - Hydration scripts compiled with SWC (no Node.js needed)
- File-based routing for both backend and frontend
- Hot Module Replacement (HMR) via inline WebSocket
- One CLI (
tavo) to rule them all — scaffold projects, run dev server, and build - Python backend with Starlette/FastAPI style APIs out of the box
- Template system for rapidly creating new apps
📦 Installation
pip install tavo
Or from source:
git clone https://github.com/cyberwizdev/tavo
cd tavo
pip install -e .
⚡ Quick Start
1. Create a new project
tavo new myapp
This sets up a project with:
- Python backend (
tavo_core) - React frontend with SSR
- HMR + WebSocket inline dev server
- Preconfigured templates
2. Run dev server
cd myapp
tavo dev
Visit: http://localhost:3000 Changes reload instantly ⚡.
3. Build for production
tavo build
This generates:
- ✅ Compiled backend (Python)
- ✅ Optimized frontend bundle (SWC)
- ✅ Static + SSR-ready HTML
🗂️ Project Structure
A new tavo project looks like this:
myapp/
│── app/ # React components (App Router)
│ ├── layout.tsx
│ ├── page.tsx
│ └── ...
│── backend/ # Python backend (APIs, DB, services)
│ ├── main.py
│ └── routes/
│── public/ # Static assets
│── templates/ # Scaffolding templates
│── package.json # For frontend deps (optional, only if needed)
│── pyproject.toml # Python project config
│── tavo.config.json # Tavo project config
🛠️ CLI Commands
| Command | Description |
|---|---|
tavo new <name> |
Create a new project |
tavo dev |
Run development server with HMR |
tavo build |
Build backend + frontend for production |
tavo add <name> |
Add a component, page, or API route |
tavo doctor |
Check environment & setup |
⚙️ Configuration
Tavo uses a tavo.config.json file:
{
"name": "myapp",
"backend": "fastapi",
"frontend": "react",
"ssr": true,
"hmr": true
}
🤝 Contributing
- Fork the repo
- Create your feature branch (
git checkout -b feature/foo) - Commit changes (
git commit -m 'Add foo') - Push to branch (
git push origin feature/foo) - Open a PR 🚀
📜 License
MIT © CyberwizDev
🌟 Why the name Tavo?
Short, catchy, and inspired by “Tabula Volans” — “a flying tablet/page” in Latin. Just like how Tavo makes pages fly from Python to React ⚡.
Project details
Release history Release notifications | RSS feed
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 tavo-0.1.31.tar.gz.
File metadata
- Download URL: tavo-0.1.31.tar.gz
- Upload date:
- Size: 131.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2e7d21e0e4f4430c5436ec198f910126c45f0276c3c1cc8ee4afd7d5670a2cc2
|
|
| MD5 |
5efbb01057c1f09086bb2346f71bf48e
|
|
| BLAKE2b-256 |
d56cb4059e42c700a16b186b171f84c8038f7819dc2f087a9489b6807bfbb58e
|
File details
Details for the file tavo-0.1.31-py3-none-any.whl.
File metadata
- Download URL: tavo-0.1.31-py3-none-any.whl
- Upload date:
- Size: 4.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c8a02b30b8248d0203cd4825f3dee1e925c6d403c1622d0f442922c001024d8d
|
|
| MD5 |
5fa78a9a19e99baeea2a774f15615e01
|
|
| BLAKE2b-256 |
639c59ab5bf7e7c35869a1925257a7ad6cb1b568a8e272a0af7a8f02d3b88cc5
|