Flaxon 0.3.0 and Teloce-Py 0.3.0 are available on PyPI. Release instructions are maintained on this site; source links identify the framework snapshot. Check version and upgrade guidance.
Philosophy
Core Principles
Flaxon is built around a set of principles that guide its design, development, and long-term direction.
The goal is to create a full-stack framework that is:
- Simple to start
- Powerful when applications grow
- Technology-neutral
- Easy to debug
- Designed for modern async applications
1. Simple Applications Remain Simple
Small applications should be easy to create without generators, complex configuration, or mandatory architecture.
Flaxon provides a minimal entry point that allows developers to build quickly.
Example:
from flaxon import Flaxon
app = Flaxon("my-app")
@app.get("/")
async def home():
return {
"message": "Hello"
}
````
A simple application should remain simple.
---
# 2. Large Applications Gain Structure
As applications grow, Flaxon provides optional structure without forcing developers into a specific architecture.
Developers can gradually introduce:
* Routers
* Services
* Middleware
* Plugins
* Dependency management
Example:
```python
from flaxon import Router
api = Router(prefix="/api/v1")
@api.get("/users")
async def list_users():
return [
{
"id": 1,
"name": "Alice"
}
]
app.include_router(api)
The framework should grow with the application.
3. HTML Rendering is Optional
Flaxon treats APIs and backend services as a first-class use case.
HTML rendering through Jinax is optional and loaded only when needed.
API Only
No template dependencies are required:
@app.get("/api/users")
async def get_users():
return [
{
"id": 1,
"name": "Alice"
}
]
Using Templates
Templates can be added when required:
from flaxon.jinax import Jinax
app.use_templates(
Jinax("templates")
)
Developers can choose between API-only applications or server-rendered applications.
4. Technology Neutrality
Flaxon does not force developers to use a specific frontend, database, ORM, or client technology.
You can use:
Frontend
- React
- Vue
- Angular
- Svelte
- Flutter
- Native mobile applications
- Custom clients
Databases
- PostgreSQL
- MySQL
- MongoDB
- Redis
- SQLite
- Custom storage solutions
ORMs and Data Tools
- SQLAlchemy
- SQLModel
- Tortoise ORM
- PyMongo
- Custom solutions
The framework should adapt to your technology choices, not restrict them.
5. Explicit and Debuggable
Framework behavior should be clear and understandable.
Flaxon avoids unnecessary hidden behavior and focuses on:
- Clear APIs
- Useful error messages
- Debugging information
- Request context visibility
Example:
raise HTTPException(
404,
"User not found.",
code="FX-USER-404"
)
Errors should help developers understand what happened and how to fix it.
Design Decisions
Why ASGI?
ASGI (Asynchronous Server Gateway Interface) is the modern Python standard for asynchronous web servers.
It provides support for:
- HTTP requests
- WebSockets
- Application lifecycle events
This makes it a strong foundation for async-first applications.
Why Flask-Style Routes?
Flask-style decorators are familiar to many Python developers.
They provide:
- Simple syntax
- High readability
- Easy learning curve
- Clear application structure
Example:
@app.get("/users")
async def users():
return []
Why Async-First?
Modern applications often depend on external resources:
- Databases
- APIs
- File storage
- WebSocket connections
Async programming allows applications to efficiently handle many concurrent operations.
This is useful for:
- Real-time applications
- Chat systems
- Dashboards
- Mobile backends
- API platforms
Why No Built-in ORM?
Flaxon is technology-neutral.
Different projects require different database approaches, so developers should choose the tools that fit their application.
Flaxon supports using:
- SQL databases
- NoSQL databases
- ORMs
- Query builders
- Custom database layers
What Flaxon Is Not
Flaxon is designed with a specific purpose.
It is:
- Not a full-stack framework with every feature built in.
- Not a replacement for Node.js, Go, Rust, or other ecosystems.
- Not designed to claim absolute performance superiority.
- Not a compiled language.
Flaxon is Python with the advantages and tradeoffs that come with Python.
When to Use Flaxon
Flaxon is a good choice for:
- Building APIs for React, Vue, Angular, or other frontends
- Developing mobile application backends
- Creating real-time applications with WebSockets
- Building Python microservices
- Creating scalable backend systems
- Projects that value technology freedom
- Teams that want clear debugging
- Applications that start small and grow over time
When Not to Use Flaxon
Flaxon may not be the best choice when:
- You are creating only a simple static website.
- You require maximum CPU performance from a compiled language.
- You need an ecosystem with decades of existing packages and integrations.
The Flaxon Vision
Flaxon aims to provide a modern Python backend experience:
Simple enough for beginners. Powerful enough for production. Flexible enough for any technology stack.
Integrated interfaces, explicit choices
Teloce is Flaxon's integrated component/compiler path. Python routes, UI pages and scoped components can live in a single feature module. Jinax remains the server-template path, and external frontends remain possible. Full-stack here means an integrated application workflow, not automatic hosting, SSR or accounts. See the ten lessons.