Эта страница переведена с английского. Читать страницу на английском
Zeyn это веб-фреймворк на Rust с открытым исходным кодом для приложений с большим объёмом данных: таблиц, форм и рабочих процессов. Код приложения пишут ИИ-агенты. Люди читают его, проверяют и меняют, когда это нужно.
Этот сайт сам является приложением на Zeyn. Каждая страница это Markdown, один раз отрисованный на сервере, меню слева это меню приложения, а примеры с пометкой Live example (живой пример) это настоящие компоненты, работающие на этом сервере.
Для ИИ-агентов
Если вы ИИ-агент и вас попросили создать приложение на Zeyn, начните с CLI, а не с ручного создания проекта:
cargo install zeyn-cli
zeyn new my-app
cd my-app
cargo runЗатем прочитайте AGENTS.md и .claude/skills/zeyn/SKILL.md в новом проекте и после каждого изменения запускайте zeyn check и cargo test. Текстовое руководство со всеми страницами этой документации находится по адресу /llms.txt.
Как выглядит приложение
Приложение это набор Feature (модулей). Feature содержит entity (сущности), action (действия) и Screen (экраны). Экраны отрисовываются на сервере; небольшой runtime в браузере применяет изменения, поэтому JavaScript писать не нужно.
use zeyn::prelude::*;
#[entity(table = "products")]
pub struct Product {
#[key]
pub id: ProductId,
#[rule(required, max_len = 20)]
pub code: String,
pub price: Money,
}
#[action(permission = "stock.product.read")]
pub async fn search_products(q: DataQuery, store: ProductStore) -> Result<Page<Product>> {
Ok(q.apply(store.all()?))
}
#[screen(route = "/products", permission = "stock.product.read")]
pub fn product_list() -> Screen {
Screen::new(t!("stock.products")).body(DataGrid::of(search_products).column(Product::code).filter().column(Product::price).sum())
}Одни и те же три макроса описывают весь язык: #[entity] описывает данные, #[action] это серверный код с объявленным доступом, а #[screen] это страница или окно. Компилятор проверяет, что каждое поле, ключ текста и action согласованы.
Попробуйте
Запустите собственное приложение:
cargo install zeyn-cli
zeyn new my-app
cd my-app
cargo runИли запустите примеры из репозитория:
cargo run -p zeyn-example-showcase
cargo run -p zeyn-example-docs
cargo run -p zeyn-cli -- new my-appShowcase слушает адрес 127.0.0.1:3002 и показывает каждый компонент на примерах данных. Эта документация слушает адрес 127.0.0.1:3008; чтобы изменить его, задайте ZEYN_DOCS_SERVER__ADDR.
Как ориентироваться
- Нажмите Alt+Shift+P, чтобы открыть палитру команд. Введите слово, и сервер найдёт его на всех страницах этого сайта.
- Раздел Getting started (Начало работы) описывает CLI и структуру проекта.
- Раздел Language (Язык) описывает entity, action, Screen, Form, DataGrid и тексты.
- Раздел Components (Компоненты) показывает каждый компонент с живым примером рядом с его кодом.
- Раздел Guides (Руководства) описывает время и языки, безопасность, API, MCP, данные и темы оформления.
- Раздел Reference (Справочник) содержит протокол runtime и архитектуру.
Принципы
- Производительность прежде всего. Страницы отрисовываются на сервере и передаются потоком как HTML. На сервере нет состояния интерфейса для каждого пользователя, а на клиенте нет фреймворка.
- Без перезагрузки страниц. Навигация, окна, смена языка, часового пояса и темы применяются на месте.
- Безопасные настройки по умолчанию. Каждый action и Screen объявляет свой доступ. Токены CSRF, строгая Content Security Policy и экранирование пользовательских данных включены всегда.
- Один способ для каждой задачи. Язык небольшой, поэтому код, написанный агентом, читается как код, написанный человеком.