A stable foundation for your next small Django app.
Note: SmallStack is pre-1.0 and changing rapidly. The API and conventions will stabilize at the 1.0.0 milestone.
SmallStack is a batteries-included Django starter for small teams, self-hosters, and container deployments. Clone it, customize it, ship it.
SQLite is a first-class citizen. SmallStack comes configured to run production-ready on SQLite — no database service fees, just simple reliable storage that backs up with your VPS. Need Postgres? The docs include setup instructions.
Build websites, API servers, or background task runners. SmallStack includes built-in support for scheduled background tasks via Django 6's Tasks framework — no Redis or Celery required.
SmallStack extends Django's built-in admin theme — forms, widgets, tables, and all the standard elements — without any external CSS. It adds dark/light mode support with multiple color palettes, all driven by CSS custom properties.
Bring your own theme. SmallStack separates public pages from management pages. Use your own CSS framework for your app while SmallStack preserves its own theme for the included tools: Explorer, Activity, Backups, Status, Users, and Dashboard. Build your app your way, then log in to manage it with the built-in SmallStack tools when you need to.
- Authentication — custom User model, login, signup, password reset
- User profiles — photo, bio, timezone, display name
- Model Explorer — auto-generated CRUD views for any registered model
- Activity tracking — request logging with staff dashboard and auto-pruning
- Database backups — on-demand + scheduled, with retention policies
- Background tasks — database-backed task queue, no external services
- Help system — markdown docs with search and table of contents
- htmx — partial page updates with no build step, vendored locally
- Docker + Kamal — production-ready container config with zero-downtime deploys
- Python 3.12+
- UV package manager
git clone https://github.com/emichaud/django-smallstack.git myapp
cd myapp
make setup # install deps, migrate, create dev superuser (admin/admin)
make run # start dev serverOpen http://localhost:8005 and log in with admin / admin.
cp .env.example .env # create env file (edit as needed)
docker compose up -d # build and startAccess at http://localhost:8010. Default port can be changed in docker-compose.yml.
django-smallstack/
├── apps/ # Django applications
│ ├── accounts/ # Custom user model & auth
│ ├── smallstack/ # Theme, CRUD library, admin tools
│ ├── profile/ # User profile management
│ ├── help/ # Documentation system
│ ├── activity/ # Request tracking & dashboard
│ ├── explorer/ # Auto-generated model CRUD
│ └── tasks/ # Background tasks
├── config/
│ └── settings/ # Split settings (base, dev, prod, test)
├── templates/ # HTML templates
├── static/ # CSS, JS, brand assets
├── Dockerfile
├── docker-compose.yml
└── pyproject.toml
make test # run pytest with coverage
make lint # ruff check
make lint-fix # ruff check --fixOnce running, visit /help/ for full documentation including getting started, theming, deployment, and more.
MIT — use it, modify it, ship it.


