Start with priority.
Put search, the primary action and the table first. Secondary actions can stay quiet.
.crud-preview-head
ZELYRA
One schema, one CRUD declaration and a complete starting point for a real business application. This page shows the path — and where your own design begins.
An address is more than a row in a table. Define the fields, their types and their rules first. Zelyra can then use that knowledge for validation, forms and the CRUD resource.
table addresses {
id: Id primary auto
first_name: String(80) required
last_name: String(80) required
street: String(160) required
city: String(100) required
email: Email?
active: Bool default true
}This is enough to get a useful, schema-aware CRUD resource started.
crud Address -> addressesMake the important columns and entry points explicit. The schema remains the source of truth.
crud Address -> addresses {
title: "Addresses"
list { first_name last_name city email active }
search { first_name last_name city }
filter { city active }
}| Name | City | Status | ||
|---|---|---|---|---|
| Anna Weber | Berlin | anna@example.test | ● Active | ⋯ |
| Jonas Klein | Hamburg | jonas@example.test | ● Active | ⋯ |
| Lea Hoffmann | Staufenberg | lea@example.test | ○ Inactive | ⋯ |
Zelyra provides a safe, working foundation. Your design work lives in the view layer: hierarchy, spacing, color, interaction and responsive behavior.
Put search, the primary action and the table first. Secondary actions can stay quiet.
.crud-preview-headChange a small set of CSS variables instead of styling every button separately.
--purple / --acidRestyle the wrapper, table and form fields while keeping validation and permissions server-side.
view + schemazelyra check before changing the database.# inspect the plan before applying changes
zelyra db plan addresses.zyl
zelyra check addresses.zyl
zelyra serve addresses.zylThe form collects the address data. Zelyra validates required fields and email formats before the record is written to the database.
The list reads the records through the resource definition. Search, filters and pagination keep the view useful when the address book grows.
An edit action loads one record into the same field structure. Changes pass through the same validation rules as creation.
Destructive actions should be explicit, protected against CSRF and restricted by permissions. In production, consider soft deletes and an audit trail.
The schema describes the data, the CRUD resource describes the workflow and the view describes the experience. Keep these responsibilities separate and your application remains easy to extend.
Follow this sequence in a new Zelyra project. Run one step, check the result and only then continue.
Start with the official repository and enter the project directory. This gives you the CLI, examples and the basic runtime.
git clone https://github.com/sf1976/zelyra.git
cd zelyra
./install.shWindows with PowerShell and Docker Desktop
Install Git for Windows and Docker Desktop first. Open PowerShell, then run the following commands. The install script is executed inside the Linux container, so Windows users do not need a separate Linux installation.
git clone https://github.com/sf1976/zelyra.git
cd zelyra
docker compose -f docker-compose.mariadb.yml up -d --build
docker compose exec app ./install.shCreate an addresses schema. Decide which fields are required, which type they use and which values may be empty. This schema is the foundation for database and forms.
table addresses {
first_name: String(80) required
last_name: String(80) required
email: Email?
city: String(100) required
}Let Zelyra inspect the schema and show the planned change. Read the plan carefully, especially when the project already contains data.
zelyra check addresses.zyl
zelyra db plan addresses.zylConnect the resource to the addresses table. Define the title, visible columns, searchable fields and useful filters.
crud Address -> addresses {
list { first_name last_name city email }
search { first_name last_name city }
filter { city }
}Start the local server and test the complete path: list, search, create, edit and delete. Also check empty results, invalid email addresses and mobile layout.
zelyra serve addresses.zylOnly after the behavior works, change the view layer. Adjust spacing, typography, colors and table actions while keeping validation and permissions intact.
resources/views/addresses/index.blade.php
resources/css/addresses.cssModel first, inspect the plan, generate the resource, test the workflow and style last. This makes errors easy to locate and keeps the address administration maintainable.
This small front-end demo runs entirely in your browser. Search, filter, create and delete records to see the interaction a generated resource can provide.
| Name | City | Status | ||
|---|---|---|---|---|
| Anna Weber | Berlin | anna@example.test | Active | |
| Jonas Klein | Hamburg | jonas@example.test | Active | |
| Lea Hoffmann | Staufenberg | lea@example.test | Inactive |