chore: rebrand ClubManager -> RosterChief, add lucide icons
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>
This commit is contained in:
20
.env.example
20
.env.example
@@ -12,26 +12,26 @@ 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. clubmanager.app).
|
||||
CLUBMANAGER_BASE_DOMAIN=localhost
|
||||
# In production set this to your real base domain (e.g. rosterchief.app).
|
||||
ROSTERCHIEF_BASE_DOMAIN=localhost
|
||||
|
||||
# Two-factor auth. CLUBMANAGER_BASE_DOMAIN doubles as the WebAuthn Relying Party
|
||||
# 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.
|
||||
# CLUBMANAGER_RP_NAME is what the browser shows during a passkey prompt.
|
||||
# CLUBMANAGER_RP_NAME=ClubManager
|
||||
# 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 CLUBMANAGER_BASE_DOMAIN in production; left host-only on localhost
|
||||
# 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=.clubmanager.app
|
||||
# DJANGO_CSRF_COOKIE_DOMAIN=.clubmanager.app
|
||||
# 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/clubmanager
|
||||
# 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://*.clubmanager.app
|
||||
# DJANGO_CSRF_TRUSTED_ORIGINS=https://*.rosterchief.app
|
||||
|
||||
# Optional.
|
||||
# DJANGO_TIME_ZONE=Europe/Brussels
|
||||
|
||||
Reference in New Issue
Block a user