Your first screen¶
You've registered a model. Now choose how it becomes a screen. Conjure offers two modes that read the same introspection schema, so you can mix them per page.
📋 planned The bundled SPA will render any registered model from the live schema. You write no frontend code.
Open http://localhost:8000/admin-panel/, log in with an is_staff account, and your
model appears in the sidebar. The runtime renderer covers list views today (search and
filter); create/edit is a documented stub for now.
Best for: getting an admin up today, internal tools, models that don't need a bespoke UI.
✅ available Scaffold plain React pages from the schema, then edit them like any other code in your repo.
# build the dashboard from the monorepo source (packages/web);
# an npm release of the scaffolding tooling is planned 🟡
# generate pages for a model from its schema, then:
npm run build # tsc strict + vite
Each model gets a small page set (schema, columns, index, form, detail).
They're ordinary .tsx files — change a cell, add a button, restyle a form.
Best for: customer-facing or heavily-customized screens you want to own.
How they relate¶
graph TD
R["@register(Product)"] --> S["/conjure/schema/"]
S -->|runtime| G["GenericModelPage 📋<br/>renders from schema"]
S -->|codegen| C["pages/product/*.tsx<br/>you own + edit"]
G -.eject.-> C
Both paths start at the same schema endpoint. The recommended workflow is hybrid: let runtime mode cover most models, and eject the few that need to be special into codegen pages you own. See Custom pages for the eject flow.
Authentication: session vs JWT¶
The dashboard authenticates the way you configure CONJURE["AUTH"].
Reuses your existing Django login. Nothing extra to deploy — if the user has a Django
session and is_staff, they're in.
Best when the admin lives on the same domain as your Django app.
Staff-only access tokens via SimpleJWT, for a separately-hosted SPA (S3 + CDN).
The dashboard calls POST /conjure/auth/login/, stores the token, and the API client
refreshes on 401 automatically. See the REST API reference.
Verify the screen¶
- Log in with an
is_staffaccount. - Find your model in the sidebar (runtime) or open its route (codegen).
- Search and filter a column. In codegen pages you can also create, edit, and delete a row; in runtime mode create/edit is still a stub.
- If you ran
migrate conjure, the audit log now shows your writes with a diff.
From here, make it yours: theme it, organize the sidebar, or customize a page.