core.console Roadmap
core.console Roadmap
Living task list for core.console — the unified management plane and API gateway of the UNVRSL platform.
Current State (audit 2026-07-19)
Greenfield scaffold. The repo contains only a 14-line JSON health endpoint (
index.php) and a README. No structure, no composer, no DB.Status: greenfield implementation of the finalized L2 design. Architecture is fully specified in a single comprehensive L2 article (07-console): three-layer model, user model (dev users + organizations), ownership model, full data model (15 tables), scoping model, billing model, stats/logs architecture, console UI architecture, request flow, SSO integration, service registration, SDK shape, storage pool provisioning.
Architectural rule (confirmed 2026-07-19): core.console is the ONLY service user-facing projects ever talk to. core.auth, core.ai, core.storage, core.hypermedia never serve projects directly — all traffic routes through core.console with project API keys, for stats, logging, and payment. (Like the Google Cloud Console.) Exception: core.assets is a public CDN, not console-routed.
→ L4 code reference will be initialized once the Phase 0 scaffold lands.
Dependencies
| Depends On | For |
| core.auth | SSO, sessions, user identity, account quotas — console delegates auth entirely (no passwords/sessions/2FA stored) |
| core.backend | DocumentShell for console pages; later hosts the Console\Client SDK |
| core.assets | Design CSS + ui.js for the console UI (public CDN, consumed directly) |
| core.auth / core.ai / core.storage / core.hypermedia | Route targets behind the gateway |
| MySQL | All console tables (dev_users, orgs, projects, keys, logs, stats, …) |
| SMTP | Org invites, transfer notifications, system alerts |
Sequencing note: Phase 0's SSO handshake needs core.auth's session core (core.auth L3 Phase 0) to exist first.
Current Sprint — Phase 0: Foundation
- [ ] Repo scaffold — structure per L4 conventions (public/, src/, env/), real composer.json (PSR-4)
- [ ] DB schema — all 15 tables from L2 07: dev_users, organizations, organization_members, org_member_scopes, projects, pending_project_transfers, api_keys, project_security_rules, billing_profiles, project_billing, request_log, project_stats, avatars, todos, notifications
- [ ] SSO handshake — redirect to core.auth → return → console session context (delegates auth fully)
- [ ] Dev user onboarding — first-visit flow: terms acceptance → username selection (pre-filled from auth) → dev_users row → empty dashboard
- [ ] Console shell — top bar (user/org selector, project selector, search, User Circle via core.console-delivered core.auth script) + left nav skeleton, styled via core.assets design CSS through DocumentShell
Backlog
Phase 1: Projects & API Keys
- [ ] Project CRUD (owner = dev user XOR org,
chk_single_owner), slug, avatar, status/kill switch - [ ] Service enablement per project (
enabled_servicesJSON) - [ ] API keys: scoped subsets of enabled services, Argon2id hash storage, show-once + prefix display, expiry, revoke,
last_used_at - [ ] Project security rules: IP/CIDR/domain/wildcard, project-wide + per-service override resolution, deny-by-default when zero rules
- [ ] Project creation form (1–2 pages) + auto-generated setup to-do checklist
Phase 2: API Gateway (runtime)
- [ ] Request pipeline in L2 order: resolve project from key → security rules → project status → key service scope → quota → route → log
- [ ] Internal clients for the four microservices (service-to-service calls)
- [ ] request_log writes on every request (error-focused fields)
- [ ] Rate limiting
Phase 3: Organizations
- [ ] Org CRUD, slug, avatar
- [ ] Members: invite by dev username (email + in-console notification), accept flow, roles (admin/member/viewer)
- [ ] org_member_scopes resolution (admin implicit full; project-level overrides org-wide; default deny)
- [ ] Project transfers: admin immediate; non-admin → pending_project_transfers → admin approve + assign billing
Phase 4: Billing
- [ ] Billing profiles at owner level (dev user / org), multiple profiles per owner
- [ ] project_billing assignment on creation + reassignment on transfer
- [ ] Pooled billing views at owner level; plan limits surfaced in UI
Phase 5: Stats & Logs
- [ ] Request log viewer (filters: status, service, time range, API key)
- [ ] Hourly aggregation job: request_log → project_stats (upsert per project/service/hour)
- [ ] Dashboards: charts from project_stats (never raw request_log), pooled owner-level views
Phase 6: Ecosystem Glue
- [ ] Service registration (name, endpoints, quota model, health endpoint) + health surfacing
- [ ]
Console\ClientSDK in core.backend (storage/auth/hypermedia/ai facades through the gateway) - [ ] Storage pool provisioning orchestration: provider catalog from core.storage → selection UI → pool creation (console never touches S3 credentials)
Completed
- [x] L2 architecture finalized (2026-07-05)
- [x] Repo scaffold placeholder + subdomain live (health endpoint)