Skip to main content

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 | Русский

Syqlorix Logo

PyPI version Python Version License: MIT GitHub issues Discord

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 .py files.
  • 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

  1. Install Syqlorix:

    pip install syqlorix
    
  2. 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.")
            )
        )
    
  3. Run the development server:

    syqlorix run app.py
    
  4. 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)

  • syqlorix init [filename]

    Creates a new project file with a helpful template.
  • syqlorix run <file>

    Runs the live-reloading development server.
  • syqlorix build <file>

    Builds a static version of your site in the 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

syqlorix-1.4.7.tar.gz (39.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

syqlorix-1.4.7-cp312-cp312-manylinux_2_34_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.34+ x86-64

File details

Details for the file syqlorix-1.4.7.tar.gz.

File metadata

  • Download URL: syqlorix-1.4.7.tar.gz
  • Upload date:
  • Size: 39.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.1

File hashes

Hashes for syqlorix-1.4.7.tar.gz
Algorithm Hash digest
SHA256 38c84e9a7a603074a8a106cb7105d88443927751f7d207d9c933294e366b6ab6
MD5 2555c3cd5bcd253339250840d5417a49
BLAKE2b-256 9ba942de3774bae9b244f8f68735b6b9fe5097f7b28e2df00fdf21cbc1e98a6e

See more details on using hashes here.

File details

Details for the file syqlorix-1.4.7-cp312-cp312-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for syqlorix-1.4.7-cp312-cp312-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 33e6d40c2fb855c8b268724e3e6c3be65b92f118c7d7312392e24dde0cfe9f88
MD5 08269990a4b99d20059f4f9c8899633d
BLAKE2b-256 a4db5d81637a31c41840c33968d578dfbc7e8f38ad8575d9c00b03dfe7dfdd6a

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page