A high-performance, hyper-minimalist hybrid web framework for Python. It combines a pure Python DSL with a Rust-powered core for maximum speed, secure Starlark-based components, and an optional distributed Scala backend, complete with live-reloading and static site generation.
Project description
Syqlorix: Build Hyper-Minimal Web Pages in Pure Python
English | Filipino | Cebuano | 简体中文 | 한국어 | Español | Français | Deutsch | 日本語 | Português | Русский
Overview
Syqlorix is a high-performance, hyper-minimalist hybrid web framework for Python. It combines a pure Python DSL with a Rust-powered core for maximum speed, secure Starlark-based components, and an optional distributed Scala backend, complete with live-reloading and static site generation.
It is designed for developers who want to build full HTML documents—including CSS and JavaScript—entirely within Python, while enjoying the execution speeds of a compiled backend.
Core Design Principles
- All-in-One: Write entire pages and components in
.pyfiles. - Component-Based: Structure your UI with reusable, stateful components.
- High Performance: Native Rust core for critical hot-paths (v1.4+).
- Zero-Config: Sensible defaults for instant productivity.
Key Features
- Pure Python HTML: Generate any HTML element using Python objects.
- Rust-Powered Performance: Blazing fast ID generation and Tailwind CSS processing (up to 15x speedup).
- Secure Starlark Components: Define UI logic in a deterministic, 100% sandboxed environment.
- Distributed Scalability: Optional support for high-concurrency Scala backends via Apache Thrift.
- Component-Based Architecture: Build your UI with reusable components that support props, children, scoped CSS, and lifecycle methods.
- State Management: Create interactive components with a simple, server-side state management pattern.
- Live Reload Server: The dev server automatically reloads your browser on code changes.
- Static Site Generation (SSG): Build your entire application into a high-performance static website.
- Dynamic Routing: Create clean routes with variable paths (e.g.,
/user/<username>).
Quick Start
-
Install Syqlorix:
pip install syqlorix
-
Create a file
app.py:from syqlorix import * doc = Syqlorix() @doc.route('/') def home(request): return Syqlorix( head(title("Hello")), body( h1("Hello from Syqlorix!"), p("This is a web page generated entirely from Python.") ) )
-
Run the development server:
syqlorix run app.py
-
Open your browser to
http://127.0.0.1:8000. That's it!
› Click to view Usage Guide
Component-Based Architecture
Syqlorix features a powerful component-based architecture. Components are reusable, stateful, and can have their own scoped styles.
# components.py
from syqlorix import Component, div, h1, p, style
class Card(Component):
def before_render(self):
# Lifecycle method: runs before create()
self.title = self.props.get("title", "Default Title").upper()
def create(self, children=None):
# Scoped styles using the component's unique scope_attr (Rust-powered)
scoped_style = f"div[{self.scope_attr}] h1 {{ color: blue; }}"
return div(
style(scoped_style),
h1(self.title),
*(children or [])
)
Secure Starlark Components
Use Starlark for deterministic and sandboxed component definitions, ideal for user-generated layouts.
from syqlorix import StarlarkComponent
starlark_ui = """
tag("div",
tag("h1", props["title"]),
tag("p", "Rendered securely via Starlark."),
class_="container"
)
"""
comp = StarlarkComponent(script_content=starlark_ui, title="Secure UI")
High-Concurrency Backend (Optional)
Delegate rendering to an external Scala backend via Thrift for massive horizontal scaling.
doc = Syqlorix()
# Enable high-performance Scala backend
doc.use_backend(host="127.0.0.1", port=9090)
State Management
class Counter(Component):
def __init__(self, *children, **props):
super().__init__(*children, **props)
try:
count = int(self.props.get("initial_count", 0))
except ValueError:
count = 0
self.set_state({"count": count})
def create(self, children=None):
count = self.state.get("count", 0)
return div(
h1(count),
form(
button("-", name="count", value=count - 1),
button("+", name="count", value=count + 1),
method="get", action="/"
)
)
› Click to view Command-Line Interface (CLI)
-
Creates a new project file with a helpful template.syqlorix init [filename] -
Runs the live-reloading development server.syqlorix run <file> -
Builds a static version of your site in thesyqlorix build <file>dist/folder.
Target Use Cases
- Fast Prototyping: Quickly mock up web interfaces without juggling multiple files.
- High-Performance Static Sites: Optimized build times using the Rust core.
- Secure Dashboards: Sandboxed component execution via Starlark.
- Distributed Systems: Web frontends that scale using the Scala backend.
License
This project is licensed under the MIT License - see the LICENSE file for details.
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 syqlorix-1.4.5.tar.gz.
File metadata
- Download URL: syqlorix-1.4.5.tar.gz
- Upload date:
- Size: 39.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
98d38e8cd50a0a99ec9080d5ea010ff20fa5ec1bb9ea32e6a3d4f46350e20c22
|
|
| MD5 |
31f2063102c6a613669c530a9f8e0c0e
|
|
| BLAKE2b-256 |
c6a6654ae63a8720cb1f33a0474627c903467699a7ccd1d0ea9420d474f59e2f
|
File details
Details for the file syqlorix-1.4.5-cp312-cp312-manylinux_2_34_x86_64.whl.
File metadata
- Download URL: syqlorix-1.4.5-cp312-cp312-manylinux_2_34_x86_64.whl
- Upload date:
- Size: 1.3 MB
- Tags: CPython 3.12, manylinux: glibc 2.34+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a3df04239de677e22d9b4e62a2ee5f3455a22ba8614f3f1ea012f480145765af
|
|
| MD5 |
28463ac4e8bd7cf50593cb0b24c238d4
|
|
| BLAKE2b-256 |
5b6873bc1afd6477de4817863e68d931a548a435596910af23e390728071211d
|