--- id: TASK-51 title: Consolidate standalone r*.online domains → rspace.online status: To Do assignee: [] created_date: '2026-02-25 07:46' labels: - infrastructure - domains - migration dependencies: [] references: - server/index.ts (lines 457-521 — standalone rewrite logic) - shared/module.ts (standaloneDomain interface) - shared/components/rstack-app-switcher.ts (external link arrows) - docker-compose.yml (lines 44-114 — Traefik labels) - src/encryptid/server.ts (allowedOrigins list) - src/encryptid/session.ts (JWT aud claim) priority: high --- ## Description Migrate ~20 standalone domains (rbooks.online, rmaps.online, rfunds.online, etc.) into path-based routing under rspace.online. Currently these domains are silently rewritten to /:space/:moduleId internally — this migration makes rspace.online the canonical URL, adds 301 redirects, removes dead infrastructure, and lets domains expire. Execution order: Phase 2 → 1 → 3 → 4 → 5 → 6 (fix external service URLs before enabling redirects). Key risks: - rnetwork.online is dual-purpose (module alias AND TWENTY_API_URL) — must decouple before redirects - sync.rmaps.online is a separate WebSocket service, not the rmaps module - PWA/service worker caches on old domains may need self-unregistering workers - keepStandalone domains (rcart.online, rfiles.online, swag.mycofi.earth, providers.mycofi.earth) need separate evaluation ## Acceptance Criteria - [ ] #1 All standalone domain hits return 301 → rspace.online/demo/{moduleId}/... - [ ] #2 No hardcoded references to r*.online domains remain in codebase - [ ] #3 WebAuthn/EncryptID auth works solely on rspace.online - [ ] #4 Standalone Traefik labels and docker-compose.standalone.yml removed - [ ] #5 Standalone .ts entry points deleted - [ ] #6 Domain registrations allowed to expire