Metadata-Version: 2.4
Name: sistine
Version: 0.3.5
Summary: HTML builder with server routing for Python
Author: Ararya Arka Anugraha
License-Expression: MIT
Project-URL: Homepage, https://github.com/Araryarch/sistine/blob/main/docs.md
Project-URL: Repository, https://github.com/Araryarch/sistine
Keywords: html,web,ssr
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Requires-Python: >=3.10
Description-Content-Type: text/markdown
Requires-Dist: starlette>=0.40.0
Requires-Dist: uvicorn>=0.30.0
Requires-Dist: streamlit>=1.28.0
Requires-Dist: requests>=2.28.0

# Sistine

<img width="511" height="288" alt="download" src="https://github.com/user-attachments/assets/76e85ab4-23be-4d78-8170-8065f143e108" />

> React-like UI framework for Python. Build reactive web UIs with HTML/Tailwind + Alpine.js, powered by Streamlit.

Sistine wraps Streamlit with a routing layer, DOM builder, and reactive client-side components — giving you **pixel-perfect custom UI** without giving up Python.

## Why Sistine, why not Streamlit?

Streamlit is great for data apps fast, but falls short when you need:

| Pain point | Streamlit | Sistine |
|---|---|---|
| **CSS control** | Limited, no hover/flexbox/grid/animations | Full Tailwind + custom CSS |
| **Custom HTML** | No ergonomic HTML builder | `el.div(cls="...")(child)` chaining syntax |
| **Client interactivity** | Full page reload on every interaction | Alpine.js — no reloads, reactive |
| **Architecture** | Linear script | MVC with routing (`@app.sistine("/")`) |
| **API endpoints** | None built-in | `@app.query` — JSON endpoints callable from JS |
| **Static export** | Not supported | `sistine build` → static HTML files |

You keep Streamlit's Python ecosystem while getting frontend-level UI control.

## Reactive Components

Sistine ships with Alpine-powered components that talk to your `@app.query` endpoints — dropdowns, tables with pagination, forms, live-updating views, and mutation buttons. No JS required.

## Routing & MVC

Decorator-based routing with path params. Optional MVC scaffolding via `sistine init` — models, views, controllers.

## Auth & Session

`@alpinejs/persist` is auto-included. Build login flows with client-side session persistence using `$persist()`.

## Installation

```bash
pip install sistine
```

## Docs

Full documentation with examples, API reference, and component guides: [`docs.md`](docs.md)

## Examples

Check [`examples/query_showcase.py`](examples/query_showcase.py) (all components), [`examples/auth_demo.py`](examples/auth_demo.py) (auth + CRUD), and more in the `examples/` folder.
