Skip to main content

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.

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.

Release history Release notifications | RSS feed

This release

1.4.7 This release

2 files

1.4.6

2 files

1.4.5

2 files

1.4.2

2 files

1.3.2

2 files

1.3.1

2 files

1.3.0

2 files

1.2.9

2 files

1.2.8

2 files

1.2.7

2 files

1.2.3

2 files

1.2.1

2 files

1.2

2 files

1.1.30

2 files

1.1.24

2 files

1.0.5

2 files

1.0.4

2 files

1.0.3

2 files

1.0.2

2 files

1.0.0

2 files

Supported by

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