Python-only fullstack UI framework: UI, состояние, анимации и бэкенд — только на Python.
Project description
evenis
Python-only fullstack UI framework. Весь UI, состояние, анимации и бэкенд описываются только на Python — ни строчки HTML/CSS/JS в пользовательском коде. Компилятор выдаёт SPA с настоящим Virtual DOM, а бэкенд-функции автоматически становятся API.
import evenis as ui
from evenis.server import server, action, LiveState
@server
async def get_users():
return await User.all() # → GET /__evenis/api/get_users
@action
async def add_user(name: str):
... # → POST /__evenis/api/add_user
return await User.all()
online = LiveState(0, name="online") # WebSocket-состояние
app = ui.App(title="App", state={"users": []})
@app.page("/", load=get_users.load(into="users"))
def home():
return ui.Column(
ui.Text("Онлайн: {{ online }}"),
ui.For("users", lambda u, i: ui.Text(u.attr("name"))),
ui.PrimaryButton("Добавить", on_click=add_user(into="users", name="{{ draft }}")),
)
Установка
pip install evenis # ядро (сборка статических SPA)
pip install "evenis[server]" # + fullstack (FastAPI/WebSocket)
Запуск
python -m evenis build app.py # собрать статический сайт в dist/
python -m evenis dev app.py --port 8000 # dev-сервер + hot reload
python -m evenis serve app.py --port 8000 # fullstack: фронт + API + WebSocket
Возможности
- Только Python — никакого HTML/CSS/JS в пользовательском коде.
- Virtual DOM — обновляется только изменившийся узел, фокус в полях сохраняется.
- Компоненты и раскладка —
Button,Card,Input,Row,Column,Grid,AdaptiveLayout(сам выбирает число колонок),Motion. - Состояние — реактивный store,
computed-сигналы, декларативные действия, middleware-pipeline. - Анимации — Motion, FLIP layout-переходы, настраиваемые кривые и длительности.
- Fullstack —
@server/@actionпревращают функции в API,LiveState— в WebSocket-состояние с push-обновлениями. Транспорт выбирается автоматически.
Примеры
См. каталог examples/: hello_world.py, dashboard.py, ecommerce.py,
demo_app.py, fullstack.py, docs_site.py (эта документация, написанная на
самом evenis).
MIT License.
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 evenis-0.2.0.tar.gz.
File metadata
- Download URL: evenis-0.2.0.tar.gz
- Upload date:
- Size: 52.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
75b26a817837b54782810e24b47f0f1fd15aa7dfcbae41dca3eb3164471d47da
|
|
| MD5 |
b97ee31186c5a6638bc60a083d22ec6e
|
|
| BLAKE2b-256 |
b1e79f3e5c18a440acc08014840aee8122d1a944ce72e031722616fe77794dbb
|
File details
Details for the file evenis-0.2.0-py3-none-any.whl.
File metadata
- Download URL: evenis-0.2.0-py3-none-any.whl
- Upload date:
- Size: 58.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2290dc4c55e7c31999a2462b4cbd4ca2a2a076304046aa8a0a981f321fc5601f
|
|
| MD5 |
46af080fc76d5ece5f6a12d19a113c32
|
|
| BLAKE2b-256 |
d966abb16329f632c8a239980648c3f9f8016d03ebe7db4d75500ba021e5b562
|