A lightweight, FastAPI-inspired web framework
Project description
🚀 Tachyon API
A lightweight, high-performance API framework for Python with the elegance of FastAPI and the speed of light.
Tachyon API combines the intuitive decorator-based syntax you love with minimal dependencies and maximal performance. Built with Test-Driven Development from the ground up, it offers a cleaner, faster alternative with full ASGI compatibility.
🚀 Quick Start
from tachyon_api import Tachyon, Struct, Body, Query
app = Tachyon()
class User(Struct):
name: str
email: str
@app.get("/")
def hello():
return {"message": "Tachyon is running at lightspeed!"}
@app.post("/users")
def create_user(user: User = Body(...)):
return {"created": user.name}
@app.get("/search")
def search(q: str = Query(...), limit: int = Query(10)):
return {"query": q, "limit": limit}
pip install tachyon-api
uvicorn app:app --reload
📖 Docs: http://localhost:8000/docs
✨ Features
| Category | Features |
|---|---|
| Core | Decorators API, Routers, Middlewares, ASGI compatible |
| Parameters | Path, Query, Body, Header, Cookie, Form, File |
| Validation | msgspec Struct (ultra-fast), automatic 422 errors |
| DI | @injectable (implicit), Depends() (explicit) |
| Security | HTTPBearer, HTTPBasic, OAuth2, API Keys |
| Async | Background Tasks, WebSockets |
| Performance | orjson serialization, @cache decorator |
| Docs | OpenAPI 3.0, Scalar UI, Swagger, ReDoc |
| CLI | Project scaffolding, code generation, linting |
| Testing | TachyonTestClient, dependency_overrides |
📚 Documentation
Complete documentation is available in the docs/ folder:
| Guide | Description |
|---|---|
| Getting Started | Installation and first project |
| Architecture | Clean architecture patterns |
| Dependency Injection | @injectable and Depends() |
| Parameters | Path, Query, Body, Header, Cookie, Form, File |
| Validation | msgspec Struct validation |
| Security | JWT, Basic, OAuth2, API Keys |
| Caching | @cache decorator |
| Lifecycle Events | Startup/Shutdown |
| Background Tasks | Async task processing |
| WebSockets | Real-time communication |
| Testing | TachyonTestClient |
| CLI Tools | Scaffolding and generation |
| Request Lifecycle | How requests are processed |
| Migration from FastAPI | Migration guide |
| Best Practices | Recommended patterns |
🏦 Example: KYC Demo API
A complete example demonstrating all Tachyon features is available in example/:
cd example
pip install -r requirements.txt
uvicorn example.app:app --reload
The KYC Demo implements:
- 🔐 JWT Authentication
- 👤 Customer CRUD
- 📋 KYC Verification with Background Tasks
- 📁 Document Uploads
- 🌐 WebSocket Notifications
- 🧪 12 Tests with Mocks
Demo credentials: demo@example.com / demo123
👉 See example/README.md for full details.
🔌 Core Dependencies
| Package | Purpose |
|---|---|
starlette |
ASGI framework |
msgspec |
Ultra-fast validation/serialization |
orjson |
High-performance JSON |
uvicorn |
ASGI server |
💉 Dependency Injection
from tachyon_api import injectable, Depends
@injectable
class UserService:
def get_user(self, id: str):
return {"id": id}
@app.get("/users/{id}")
def get_user(id: str, service: UserService = Depends()):
return service.get_user(id)
🔐 Security
from tachyon_api.security import HTTPBearer, OAuth2PasswordBearer
bearer = HTTPBearer()
@app.get("/protected")
async def protected(credentials = Depends(bearer)):
return {"token": credentials.credentials}
⚡ Background Tasks
from tachyon_api.background import BackgroundTasks
@app.post("/notify")
def notify(background_tasks: BackgroundTasks):
background_tasks.add_task(send_email, "user@example.com")
return {"status": "queued"}
👉 Full Background Tasks documentation
🌐 WebSockets
@app.websocket("/ws")
async def websocket(ws):
await ws.accept()
data = await ws.receive_text()
await ws.send_text(f"Echo: {data}")
👉 Full WebSockets documentation
🔧 CLI Tools
# Create new project
tachyon new my-api
# Generate module
tachyon generate service users --crud
# Code quality
tachyon lint all
🧪 Testing
from tachyon_api.testing import TachyonTestClient
def test_hello():
client = TachyonTestClient(app)
response = client.get("/")
assert response.status_code == 200
pytest tests/ -v
📊 Why Tachyon?
| Feature | Tachyon | FastAPI |
|---|---|---|
| Serialization | msgspec + orjson | pydantic |
| Performance | ⚡⚡⚡ Ultra-fast | ⚡ Fast |
| Bundle Size | Minimal | Larger |
| Learning Curve | Easy (FastAPI-like) | Easy |
| Type Safety | Full | Full |
📝 Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Run tests (
pytest tests/ -v) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
📜 License
This project is licensed under the GNU General Public License v3.0 - see the LICENSE file for details.
🔮 What's Next
See CHANGELOG.md for version history.
Upcoming features:
- Response streaming
- GraphQL support
- More deployment guides
- Performance benchmarks
Built with 💜 by developers, for developers
Project details
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 tachyon_api-0.9.0.tar.gz.
File metadata
- Download URL: tachyon_api-0.9.0.tar.gz
- Upload date:
- Size: 45.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e132eda7faf9b007e7099412d2313b184c71ed18673c5df25450f3cb48d71379
|
|
| MD5 |
86ac7361e2696e581caf116f9b0c0d90
|
|
| BLAKE2b-256 |
ecd7d3671edf212d4092bc58130ccfbe81eedd09ca644caf348e1a779cd3cbb4
|
File details
Details for the file tachyon_api-0.9.0-py3-none-any.whl.
File metadata
- Download URL: tachyon_api-0.9.0-py3-none-any.whl
- Upload date:
- Size: 58.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
676cc6780d43b6e03c3d49fc649b3069084850ad8348b006472a46d0c5760ee8
|
|
| MD5 |
f945477aedd5f6d7c5e036b45159b619
|
|
| BLAKE2b-256 |
9c6b92f9e02887b3574d5fa9944a72ab892f3d2ee2a84df417c6b847306fde88
|