Skip to main content

Build personal apps in Python. Define records, get a full app.

Project description

zuzu

Build personal apps in Python. Define records, get a full app.

import zuzu

# Define your data
contacts = zuzu.record("Contacts",
    name="",
    email="",
    company="",
    status=zuzu.Choice(["Lead", "Active", "Churned"]),
)

# Build the UI
zuzu.app("My CRM", records=[contacts], accent="purple", theme="dark")
zuzu.page("People", record=contacts, layout="cards")

zuzu.page("Dashboard")
zuzu.metric("Total", contacts.count())
zuzu.metric("Active", contacts.where(status="Active").count())
zuzu.chart(contacts, x="status", y="name", kind="donut", aggregate="count")
pip install zuzu
python my_app.py
# → opens at http://localhost:8899

What you get

  • Records — Define data models with types, choices, computed fields, and relations
  • Views — List, cards, kanban, grid, tiles, calendar, checklist layouts
  • Components — 37+ UI components: metrics, charts, forms, buttons, badges, progress bars, and more
  • Theming — 9 accent colors, light/dark/auto mode, configurable radius, density, and card style
  • Local-first — SQLite database, no external dependencies, runs anywhere Python runs

Install

pip install zuzu

Requires Python 3.10+.

Documentation

See zuzu.codes/docs for the full SDK reference.

Examples

Check the examples/ directory:

  • personal-crm — Contact manager with status tracking and dashboards

Development

git clone https://github.com/zuzucodes/zuzu.git
cd zuzu
pip install -e ".[dev]"
pytest

Frontend development

The renderer is a Preact + Vite app with Storybook:

cd frontend
npm install
npm run dev          # Dev server (proxies to Python on :8899)
npx storybook dev    # Component docs
npx vite build       # Production build → zuzu/runtime/static/

Schema-driven codegen

Components are defined as JSON schemas in schemas/ and generated into Python functions + TypeScript types:

python scripts/codegen.py           # Regenerate all
python scripts/codegen.py --check   # CI: exit 1 if stale

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

zuzu-0.1.0.tar.gz (153.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

zuzu-0.1.0-py3-none-any.whl (73.2 kB view details)

Uploaded Python 3

File details

Details for the file zuzu-0.1.0.tar.gz.

File metadata

  • Download URL: zuzu-0.1.0.tar.gz
  • Upload date:
  • Size: 153.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.6

File hashes

Hashes for zuzu-0.1.0.tar.gz
Algorithm Hash digest
SHA256 92e7222423193bca64a33fbd4696b7eadece83fe0866b2e44df662f6ccbcb9b2
MD5 4f6054b38d6d768f6406f799ee92398e
BLAKE2b-256 c3cd1200a3a4ad69313739b771a8c2c3d50581bc858eca78d0c576e5cc920986

See more details on using hashes here.

File details

Details for the file zuzu-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: zuzu-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 73.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.6

File hashes

Hashes for zuzu-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 82a5962197238dfc194273557a63fdc5ab003f4f36f75914da42060701a498d1
MD5 03d4ea6a7e4986fc469b99f65f6b09db
BLAKE2b-256 7aea7a63ebc3eaa53a4552d86b1495d4e3fbf39aaaf7df1b6c0ef8dc6f2213d0

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page