Getting Started
Everything you need to make SmallStack your own
Quick Setup
Key settings to configure first
Open config/settings.py and update these core settings for your project:
BRAND_NAME — your project's display name
SITE_NAME — used in page titles and metadata
SECRET_KEY — generate a unique key for production
ALLOWED_HOSTS — your domain(s) for production
Choose Your Layout
Sidebar, topbar, or both
SmallStack ships with sidebar + topbar combinations you can mix and match. Set SMALLSTACK_LAYOUT in settings to pick your starting point, then preview all options in the layout gallery.
The navigation guide explains how the registry works and how sections map to sidebar groups and topbar menus.
Navigation & Menus
Register your own nav items
Nav items are registered in each app's AppConfig.ready() method. Add your pages to the sidebar by calling nav.register() in your app config:
# apps/website/apps.py from apps.smallstack.navigation import nav nav.register( section="main", label="My Page", url_name="website:my_page", order=50, )
Theming & Colors
Dark mode, light mode, palettes
SmallStack supports dark and light modes with switchable color palettes. Users pick their preference from the topbar dropdown. You can add custom palettes by defining CSS variables.
All components use semantic CSS variables like --primary, --card-bg, and --body-fg so your theme applies everywhere automatically.
Creating Pages
The view → template → nav pattern
The pattern for new pages: create a view in apps/website/views.py, add a template that extends smallstack/base.html, wire up a URL, and optionally register a nav item.
Check out the Starter page and its basic variant for working examples you can copy.
Components
Cards, buttons, forms, grids, messages
SmallStack includes styled components for cards, buttons, forms, grid layouts, messages, date pickers, file uploads, and more. Browse the full component reference for copy-paste examples.