You have a public site where users sign up, log in, and use your app — all styled with your own theme. Staff also needs access to SmallStack's admin tools (Dashboard, Explorer, Backups, etc.).
Public pages: Your theme (homepage, pricing, etc.)
User pages: Your theme (dashboard, settings, etc.)
Login/Signup: Your theme
After login: Your app's start page (e.g., /dashboard/)
Admin tools: SmallStack theme (via /smallstack/ link)
Same as Scenario A — create templates/mytheme/base.html with your CSS framework and the three required SmallStack pieces (blocking theme script, window.SMALLSTACK, theme.js).
See Adding Your Own Theme for the full template.
Users should land on your app after login, not SmallStack's Dashboard. In config/settings/base.py:
LOGIN_REDIRECT_URL = "/dashboard/" # Your app's start page
LOGOUT_REDIRECT_URL = "/" # Your homepage
By default, SmallStack's login page lives at /smallstack/accounts/login/ and uses the SmallStack theme. If you want the login page to match your theme, override the template.
Create templates/registration/login.html:
{% extends "mytheme/base.html" %}
{% block title %}Sign In{% endblock %}
{% block content %}
<div class="login-container">
<h2>Sign In</h2>
<form method="post">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">Sign In</button>
</form>
{% if SMALLSTACK_SIGNUP_ENABLED %}
<p>Don't have an account? <a href="{% url 'signup' %}">Sign up</a></p>
{% endif %}
</div>
{% endblock %}
The login URL doesn't need to change — Django will find your template override automatically.
All your app pages extend your base template and live in apps/website/:
{% extends "mytheme/base.html" %}
{% block title %}Dashboard{% endblock %}
{% block content %}
<!-- Your app content, your CSS, your way -->
{% endblock %}
Protected pages use LoginRequiredMixin or @login_required:
from django.contrib.auth.mixins import LoginRequiredMixin
from django.views.generic import TemplateView
class UserDashboardView(LoginRequiredMixin, TemplateView):
template_name = "website/dashboard.html"
Staff needs a way to reach SmallStack's admin tools. Two options:
Add a link to /smallstack/ in your navbar (visible to staff only):
{% if user.is_staff %}
<a href="/smallstack/">Admin Tools</a>
{% endif %}
When staff clicks it, they'll transition to the SmallStack theme and see the Dashboard with links to Explorer, Backups, Activity, Users, etc.
For a richer experience, link directly to specific tools:
{% if user.is_staff %}
<div class="dropdown">
<button>Admin</button>
<ul>
<li><a href="/smallstack/">Dashboard</a></li>
<li><a href="/smallstack/explorer/">Explorer</a></li>
<li><a href="/smallstack/activity/">Activity</a></li>
<li><a href="/smallstack/backups/">Backups</a></li>
</ul>
</div>
{% endif %}
SmallStack's sidebar and topbar only appear on SmallStack-themed pages. Your pages use your own navigation. Users move between:
Your pages (/dashboard/, /settings/) → your navbar
SmallStack (/smallstack/*) → SmallStack sidebar + topbar
The transition is seamless — same session, same dark mode preference, same user.
Choose 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.