Skip to main content
SnackApp is a Python application framework with SnackBase embedded. One install, one process, a working multi-user app.

Install and quickstart

Open http://localhost:8000 and sign in with the credentials printed on first boot.

Tutorial

app.py declares the app and collections. Pages live under pages/ and use @page without importing the app object.
Access presets: 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 repository docs/DEPLOY.md and Dockerfile. Set SNACKBASE_DATABASE_URL to a PostgreSQL URL for production. Keep .snackapp/secret.key mode 0600.

Versioning

SnackApp starts at 0.1.1. Before 1.0, breaking changes may land in minor versions; pin snackapp~=0.1 if you need a freeze.