The clubmanager.app domain was taken, so the platform is now RosterChief (rosterchief.app). Renames the Django project package clubmanager/ -> rosterchief/ (git tracks it as a move, so history follows), every `from rosterchief.base import ...`, the settings/wsgi/asgi module paths, env vars (ROSTERCHIEF_BASE_DOMAIN / ROSTERCHIEF_RP_NAME), the MFA adapter (RosterChiefMFAAdapter), brand text, and the docs. Two things were deliberately NOT swept: - club.models.ClubManager stays: it is the Django manager *for Club*, not the brand. A blind rename would have silently broken it. - Migrations are untouched (history is not rewritten). The only reference was a cosmetic help_text, so a normal AlterField migration carries the new domain. Note the WebAuthn RP ID is the base domain, so moving to rosterchief.app cryptographically invalidates any passkey enrolled under the old one; they cannot be migrated and must be re-enrolled. Nothing is in production, so the real cost is zero. Add django-lucide (from bsiebens/lucide) for icons: the theme toggle now swaps sun/moon against the effective theme, and the control panel gets icons on its tabs, actions and stat groups. Its classifiers stop at Django 5.0, but that is stale metadata — verified rendering on Django 6 / Python 3.14. Also add formbuilder, shop and controlpanel to ruff's known-first-party list, which had drifted behind the apps that landed. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
38 lines
1.7 KiB
Plaintext
38 lines
1.7 KiB
Plaintext
# Copy to .env and fill in. Values below are development-friendly defaults.
|
|
|
|
# Required. Generate one, e.g. `python -c "import secrets; print(secrets.token_urlsafe(50))"`.
|
|
DJANGO_SECRET_KEY=change-me
|
|
|
|
# Development toggles.
|
|
DJANGO_DEBUG=True
|
|
|
|
# Hosts Django will serve. `.localhost` matches localhost and any *.localhost
|
|
# subdomain, which the tenant middleware needs for per-club subdomains.
|
|
DJANGO_ALLOWED_HOSTS=.localhost,127.0.0.1,[::1]
|
|
|
|
# Multi-tenancy: subdomains of this base domain resolve to a club by slug,
|
|
# e.g. http://ajax-united.localhost:8000/ -> club with slug "ajax-united".
|
|
# In production set this to your real base domain (e.g. rosterchief.app).
|
|
ROSTERCHIEF_BASE_DOMAIN=localhost
|
|
|
|
# Two-factor auth. ROSTERCHIEF_BASE_DOMAIN doubles as the WebAuthn Relying Party
|
|
# ID, so ONE passkey works across every club subdomain. Change it and existing
|
|
# passkeys stop validating -- they are cryptographically bound to that domain.
|
|
# ROSTERCHIEF_RP_NAME is what the browser shows during a passkey prompt.
|
|
# ROSTERCHIEF_RP_NAME=RosterChief
|
|
|
|
# Sessions are shared across club subdomains (log in once, all clubs). Derived
|
|
# from ROSTERCHIEF_BASE_DOMAIN in production; left host-only on localhost
|
|
# because browsers reject a Domain attribute there. Override if needed.
|
|
# DJANGO_SESSION_COOKIE_DOMAIN=.rosterchief.app
|
|
# DJANGO_CSRF_COOKIE_DOMAIN=.rosterchief.app
|
|
|
|
# Optional. Defaults to sqlite:///db.sqlite3 for dev; point at Postgres in prod.
|
|
# DJANGO_DATABASE_URL=postgres://user:pass@localhost:5432/rosterchief
|
|
|
|
# Optional. CSRF trusted origins (needed for subdomains in prod), comma-separated.
|
|
# DJANGO_CSRF_TRUSTED_ORIGINS=https://*.rosterchief.app
|
|
|
|
# Optional.
|
|
# DJANGO_TIME_ZONE=Europe/Brussels
|