Fullfinity
A modern ERP platform with an ORM that’s intelligent at every layer.
Most ORMs execute queries. Ours understands them. Fullfinity was built from scratch to eliminate wasted work — selective field hydration, smart computed field dependencies, automatic prefetching, and true async throughout.
Why Fullfinity?
Section titled “Why Fullfinity?”| Aspect | Fullfinity | Traditional ERPs |
|---|---|---|
| ORM | Query-intelligent — fetches only what’s needed | Fetch everything, optimize later |
| Computed Fields | Smart dependency resolution per field | Load all dependencies or hit N+1 |
| Async | Native async throughout (asyncpg) | Synchronous or async bolted on |
| Views | JSON-based, semantic inheritance | XML with XPath targeting |
| Frontend | React + Mantine | Legacy frameworks |
| Expression Language | Same Q() syntax everywhere | Different syntax per context |
Core Features
Section titled “Core Features”- Intelligent ORM - Selective hydration, smart prefetching, zero wasted queries
- Modular Architecture - Develop features as independent modules with clean inheritance
- Dynamic Views - JSON-based declarative UI with semantic targeting
- One Expression Language - Q() works in Python, JSON views, security rules, and client-side
- Role-Based Access Control - Groups, model permissions, and record rules
- Auto-Generated API - REST endpoints created automatically from models
- Multi-Tenancy - Database isolation with per-tenant module installation
Tech Stack
Section titled “Tech Stack”- Backend: Python 3.10+, FastAPI, asyncpg
- Database: PostgreSQL with JSONB support
- Cache: Valkey (Redis-compatible)
- Frontend: React with Mantine UI
Quick Example
Section titled “Quick Example”# Define a modelfrom fullfinity.engine.base import *
class Product(Model): name = Char(max_length=255, required=True) price = Monetary(default=0.0) active = Boolean(default=True) category = ManyToOne("ProductCategory", related_name="products")
# Query dataproducts = await Product.filter(active=True, price__gte=100).all()
# Create recordsproduct = await Product.create(name="Laptop", price=999.99)// Define a view{ "data_type": "UiView", "identifier": "product_form_view", "type": "Form", "model": "Product", "arch": [ { "type": "row", "content": [ { "type": "column", "span": 6, "content": [ {"type": "field", "name": "name", "properties": {"widget": "TextInput"}} ] } ] } ]}Getting Started
Section titled “Getting Started”Documentation
Section titled “Documentation”- Architecture - Understand how Fullfinity works
- Models - Define your data structures
- Views - Create user interfaces
- Security - Control access to your data
- Guides - Step-by-step tutorials