You made it — nice. This is your project's documentation home, and everything you need is right here.
SmallStack is a Django platform to build applications on. The admin shell, authentication, CRUD pages, REST, MCP, search, webhooks, feeds, a scheduler, approvals, notifications and publishing are already built, tested and themed — so your project starts at the business logic. You write the models; every platform surface picks them up.
Brand new? Start with the setup guide — it walks you through the first things to configure after cloning:
Ready to build? Jump into the reference docs:
Everything below works out of the box, is themed for all six palettes in light and dark, and is a single setting away from off.
| Feature | What it does |
|---|---|
| Authentication | Login, signup, password reset — themed and ready; custom User model |
| User profiles | Photo, bio, timezone, color palette preference |
| Theming | 6 palettes × light/dark, user-selectable; semantic CSS variables so your pages inherit it |
| CRUDView | Model → admin pages, REST + OpenAPI, MCP tools, search, webhooks — reference |
| Model Explorer | Browse and edit every registered model at /smallstack/explorer/ |
| REST API | Bearer-token auth, Swagger UI + ReDoc, typed TypeScript and Python clients — docs |
| MCP server | OAuth 2.0 + PKCE JSON-RPC server for Claude Desktop and agent frameworks — docs |
| Search | FTS5 / Postgres ranked search, Ctrl-K omnibar, search_all MCP tool — docs |
| Webhooks | Signed outbound delivery on model change, verified inbound receivers, replay — docs |
| Feeds | RSS/Atom/JSON for blogs, podcasts and changelogs (a curated Feed over your own scoped queryset); a collector pulls external feeds into a model — docs |
| Background tasks & scheduler | DB-backed task queue plus recurring @scheduled jobs with a themed UI — docs |
| Approvals | Human-in-the-loop gate: apps or AI agents file a request, a person decides, your code reacts — docs |
| Notifications | notify() with a topbar bell, unread badge and inbox — docs |
| Runbook | Versioned markdown documents with a split editor, slide and step views — docs |
| Blog & newsletter | Per-user blogs, a writing studio, runbook publishing, public feeds and a durable newsletter sender — docs |
| Datasets | Expose a filtered queryset as typed rows and columns for dashboards and charts |
| Activity & logs | Request logging with a staff dashboard; DB-backed log capture at /smallstack/logs/ — docs |
| Status monitoring | Uptime checks, a public status page, pluggable per-app monitors — docs |
| Database backups | On-demand + scheduled SQLite snapshots, download or restore |
| Help system | Markdown docs with search — you're reading it now |
The built-in apps aren't special-cased. Your app registers through the same hooks — nav.register() for navigation, dashboard.register() for a widget on /smallstack/, a Service + Monitor pair for the status page, @scheduled for recurring work, @approval_kind for a human gate, notify() for in-app notifications, @webhook_handler for inbound events, @dataset for chart-ready rows, and help_content_dir for docs like these. See Extending with AI for how the docs/skills/ files brief an AI agent on each of them.
This help system is yours to extend. Add project-specific documentation right alongside the SmallStack reference:
.md file in apps/help/content/apps/help/content/_config.yaml under your section's pages/smallstack/help/your-page-slug/Apps can ship their own docs too: set help_content_dir and help_section_slug on the AppConfig and the pages appear as a section (the blog and runbook sections work this way). See Using the Help System for the full guide.
manage.py command, Make target and the sc CLIChoose the color mode for your app.
The accent color for your app.
Choose the font family that fits your app.
Choose the gray shade for your app.
Choose the border radius factor for your app.
Choose the page layout for your app.