P Project Template

The sane way to start a fullstack app.

Pre-rendered static pages, React islands where you need interactivity, a typed FastAPI JSON API, and one container in production. Batteries included — Keycloak auth, RBAC, Alembic.

Static by default

Every public page ships as pure HTML with full metadata — fast for users, complete for crawlers.

Interactive where it counts

Islands hydrate forms, tables and dialogs with React and shadcn/ui, fetching JSON from a typed API.

Auth already wired

Keycloak login, httpOnly session cookies, silent refresh and role-gated admin/member areas come ready to use.

One process, one image

Granian serves API and site together. No sidecars, no Node runtime, nothing to babysit.