Core request flow
Core applications
administration: businesses, domain mappings, locations, rooms, operating days, waivers, staff-facing configuration, navigation, permissions, and domain bootstrap.registration: profiles, sign-in and signup flows, privacy handling, authentication middleware, and plugin-provided sign-in options.customer: customer account and profile pages.ruoom: settings, root routing, plugin discovery and metadata, email infrastructure, storage backends, health checks, and UI customization.security: key and encryption support.
Plugin lifecycle
- A released wheel installs a package below the shared
pluginsPython namespace. RUOOM_PLUGINSsupplies the ordered plugin identifiers for the deployment.- Core maps identifiers to Django app configs and adds only importable packages to
INSTALLED_APPS. plugins.<name>.plugin.PLUGIN_METADATAdeclares the URL prefix and namespace plus optional navigation, settings tabs, sign-in options, permission groups, public/staff URL patterns, middleware, and dependencies.- Core mounts each plugin’s URLs and exposes its metadata to shared UI and authentication components.
RUOOM_PLUGINS, then run python manage.py check.
Core endpoints
/administration/: staff dashboard and management workflows./customer/: customer account workflows./registration/: password authentication and account creation./admin/: Django admin./health/and/health: health checks./accounts/: Django authentication URLs.
Persistence and storage
Core uses SQLite by default. Asqlite:// or postgresql:// DATABASE_URL selects an explicit backend. Local uploads use the filesystem; STORAGE=S3 switches private uploaded media to an S3-compatible backend while public static assets remain same-origin through WhiteNoise.