Install and quickstart
Tutorial
app.py declares the app and collections. Pages live under pages/ and use @page without importing the app object.
team, private, readonly, public. private adds an owner user field when missing.
Field types
text, long_text, rich_text, number, currency, percent, rating, boolean, date, datetime, select, multi_select, email, emails, phone, phones, url, links, full_name, address, json, array, file, files, relation, user.
Unknown types raise at declaration. Computed fields are read-only.
ui.* primitives
Layout: header, row, column, card, tabs, tab, fragment.
Display: text, markdown, stat, empty, badge, divider, table, fields, kanban, list_view, calendar, timeline, record, chart, bar_chart, view_bar, filter_bar.
Input: button, form, modal_form.
Aggregates: Table.count / Table.aggregate call SnackBase’s aggregate endpoint, not row loads.
Deployment
See the SnackApp repositorydocs/DEPLOY.md and Dockerfile. Set SNACKBASE_DATABASE_URL to a PostgreSQL URL for production. Keep .snackapp/secret.key mode 0600.
Versioning
SnackApp starts at0.1.1. Before 1.0, breaking changes may land in minor versions; pin snackapp~=0.1 if you need a freeze.