Aviso: La mayoría de las actualizaciones estarán en inglés, pero iré publicando también entradas resumen en español cada cierto tiempo.
This post complements the previous entry (XP-R — Slowing Down to Scale: Building Context as a Force Multiplier).
Decoupling Identity from the Game
I’ve separated the "Human" (Auth/Security) from the "Avatar" (In-game entity).
-
The Logic:
identityhandles the account;charactershandles the persona. - The Payoff: A clean User model and a future-proof path for multi-character support without touching the auth core.
The Workspace Pattern (Multi-tenant)
Instead of building custom logic for Orgs, Alliances, or Communities, I’ve unified them under a Workspace model.
- The Goal: Build features like DKP or Calendars once.
- The Result: The system is agnostic; it doesn't care if you are a massive fleet or a small squad, the tools just work.
Namespacing & Fleet SSOT
I’m organizing features into public_features and private_features. It’s a clean split between global platform value and premium group tools.
Additionally, I’ve locked down the Fleet logic: Ships are managed in a Single Source of Truth. Other modules can link to ships, but they can't create them. Consistency is non-negotiable.
The xpr Modular Monolith
The backend is structured to keep domains isolated but reachable:
- Core & Workspaces: The infrastructure and tenant logic.
- Meetings: The dynamic engine for event lifecycles.
- Realtime & Gateway: The entry points for the frontend (xsr).
Clean Connections
To avoid the classic Django circular import nightmare, I’ve mandated using the App Registry for cross-module relations. It keeps dependencies flat and the architecture predictable.
Next Step: With the architectural context now locked in, I’m moving into the final polish of the database models before the first "real" lines of code are written.
Top comments (0)