Skip to content

v1.3 — Standalone Admin Dashboard

Every operator-facing surface lifted out of the mobile app and into a desktop-first Vue 3 SPA — admin_dashboard/ — with Clerk auth, role-based access, and an approval workflow wired end-to-end before public launch.

Summary

Pre-v1.3, Objectuve's admin surface lived as an eight-tab segment inside the Ionic mobile app. It worked for a founder on a laptop, but every admin workflow — moderation, user investigation, billing reconciliation, log inspection — is a desktop task. The Ionic segmented-tab pattern collapses at eight tabs even on tablet; there was no RBAC, no audit log, and no GDPR tooling. The original PRD (Standalone Admin App PRD) argued that waiting for Phase 7 to extract was too late — public launch would arrive first.

v1.3 executed the extraction. admin_dashboard/ shipped as a new Vue 3 + Vite + Tailwind SPA (no Ionic) alongside the existing frontend, with eleven functional views (Dashboard, Users, Moderation, Analytics, Monitoring, Feedback, AI Workforce, Review Queue, Employee Detail, Run Detail, Sign-In), Clerk auth with a fallback token for outages, an AdminRole join table replacing the old User.admin boolean, and an AdminAction audit log wrapping every admin mutation via the Admin::Logged interaction concern.

The dashboard also introduced the Review Queue that v1.4 AI Workforce would rely on, and a first-pass moderation + feedback ingestion surface. The evolution of this dashboard — pagination, GDPR wizards, billing console, observability — is scoped in the follow-up Admin Evolution PRD.

Goal

Extract operator-facing work from the mobile app into a standalone Vue 3 + Vite + Tailwind admin dashboard, enforce RBAC via AdminRole, audit every admin action via AdminAction, and give the Review Queue a desktop-first home before public launch.

Scope — What Shipped

  • New monorepo app at admin_dashboard/ — Vue 3 + Vite + Tailwind + Headless UI + Heroicons (no Ionic).
  • Clerk OAuth with a fallback-token path for Clerk outages or local testing.
  • 11 functional views — Dashboard (activity log + 8 stat cards), Users (backend search + role editor), Moderation (content flags + reports), Analytics (growth + engagement + activity), Monitoring (health + Sidekiq + AI usage), Feedback, AI Workforce, Review Queue, Employee Detail, Run Detail, Sign-In.
  • AdminRole model with four roles (super_admin, admin, support, moderator); replaces the legacy User.admin boolean (kept as a derived shim).
  • AdminAction audit log — every admin mutation wraps Admin::Logged, capturing actor, target (polymorphic), action type, metadata, and before/after state.
  • Admin::UserSearch interaction — backend-side ILIKE search over concat_ws(username, first_name, last_name, email, public_id) (trigram indexes deferred to the follow-up evolution PRD).
  • Admin::UpdateUserRoles mutation — grant/revoke admin roles with audit trail.
  • Moderation queue + review mutationsreview_content_flag, review_content_report with severity-aware sorting.
  • Feedback ingestion surface — post list, status updates, top posts, category breakdown.
  • Firebase Hosting target enkidu-admin (+ staging).
  • Shared Apollo client config — reuses the ionic_frontend's SessionToken header contract.
  • Unit tests — 24 Vitest specs across 15 components and 9 views.

Phases

PhaseNameStatusHighlights
1–7Initial admin app extractionShippedShell, auth, layout, Dashboard, Users, Moderation
8–12Ionic feature parity + supporting viewsShippedAnalytics, Monitoring, Feedback, AI Workforce prep, Review Queue

Exact phase-by-phase breakdown was not archived under .planning/milestones/v1.3-* — the work shipped via PR #312 across 12 phases on the feature/admin-dashboard-v1.3 branch.

Key Decisions

  • Separate monorepo app, not a new repo — reuses monorepo conventions (Apollo, Tailwind, Vitest, Storybook, Firebase Hosting targets). A sibling app directory is the lowest-friction extraction.
  • Vue 3 + Vite + Tailwind without Ionic — desktop-first layouts need dense tables, multi-column forms, and keyboard shortcuts. Ionic's mobile-optimised components fight those patterns.
  • AdminRole as a join table, not a new enum column — supports multiple roles per user, role history, and future scoping (e.g. team_admin(team_id)).
  • User.admin kept as a derived boolean — backward compatibility for one release; downstream code can keep asking user.admin? without migration pressure.
  • Audit log enforced at the interaction layer — every admin mutation must wrap Admin::Logged or RuboCop/CI catches it. Frontend gates are UX; backend gates are truth.

Requirements Coverage

Requirements were tracked informally through phase checklists on the branch; there is no canonical v1.3-REQUIREMENTS.md. The follow-up Admin Evolution PRD restates the scope gaps (pagination, GDPR, billing console, feature flags, observability parity) that v1.3 intentionally deferred.

Outcomes

  • Eleven functional admin views live on staging.admin.objectuve.com and (post-release) the production admin origin.
  • Role delegation possible. First support or moderator hire gets a scoped account, not super_admin.
  • AI Workforce unblocked. v1.4 shipped its Review Queue and Employee Detail views into this shell instead of bolting tabs onto Ionic.
  • Mobile bundle shrank. Admin code was removed from the user-facing Ionic build, reducing attack surface and install size.

Known Gaps (addressed in follow-up)

  • No pagination on admin queries (at 5K MAU this starts to hurt).
  • No frontend RBAC enforcement — all authenticated admins currently see every button; backend rejects but UI doesn't hint.
  • No GDPR request queue / export wizard / deletion wizard.
  • No Stripe webhook log, refund workflow, or reconciliation tool.
  • No feature flag UI; flags still in config/settings/*.yml.
  • No Sentry / PostHog on the admin app itself.

All tracked in Admin Evolution PRD.

  • 6d61ee0c1Feature/admin dashboard v1.3 (#312)
  • 102d9ee95docs: add phases 8-12 to v1.3 roadmap for Ionic admin feature parity
  • b1fdc7860docs: save requirements and roadmap for v1.3
  • 59c2c87dfdocs: start milestone v1.3 Standalone Admin App
  • 856d3bd4cfeat(admin): restore analytics, monitoring, moderation, and feedback views

Last updated: 2026-05-22

Loading…