Admin Dashboard Architecture Recommendation
Date: February 15, 2026 Status: Pending - To be addressed after core project functionality is complete
Current State
Health Endpoint
- URL:
/health - Returns:
{ status: "healthy", timestamp: "..." } - Basic health check - confirms API is running
Existing Admin System (Project-Specific)
Backend API (/api/admin/*):
/stats- Dashboard stats (users, charts, extractions)/users- List all users with credit balances/credits/grant- Grant credits to users/credits/refund- Refund credits
Frontend:
/admin- Main admin dashboard page/admin/docs- Admin documentation- Admin link in header (only visible to admin users)
Currently Missing:
- Model quality metrics viewing
- Extraction history analysis
- Health monitoring across services
- Cross-project insights
The Decision: Unified vs Project-Specific
Since the database serves 3 projects (org-chart, tagdai, and one other), we need to decide on admin architecture.
Option 1: Unified Admin Site (RECOMMENDED) π
Build once, manage everything
Structure
admin.anglin.com/βββ /dashboard # Overall stats across all projectsβββ /projectsβ βββ /org-chart # Org chart specific metricsβ β βββ /extractions # Vision AI quality metricsβ β βββ /users # Org chart usersβ β βββ /credits # Credit managementβ βββ /tagdai # TagdAI specific metricsβ βββ /project3 # Third projectβββ /users # All users across projectsβββ /database # Shared database health & metricsβββ /health # All API health statusesβββ /analytics # Cross-project analyticsAdvantages
β Single dashboard for all projects β View metrics across all products β Centralized user management β Better database insights (since itβs shared) β One place to monitor health of all APIs β Avoid duplicate code across projects β Cross-project analytics and reporting β Easier to maintain (one codebase)
Disadvantages
β More complex initial setup β Requires coordination across teams β Needs authentication/authorization for all projects
Technology Stack
- Framework: Next.js (same as org-chart app)
- Styling: Tailwind CSS (consistent with projects)
- Auth: Supabase (shared auth across projects)
- Deployment: Vercel or Cloudflare Pages
- Domain:
admin.anglin.com
Features to Include
Dashboard Home
- Total users across all projects
- Total API calls / requests
- Revenue/credits across all projects
- Health status of all APIs
- Recent activity feed
Project-Specific Pages
Each project gets its own section with:
- Project-specific metrics
- User management
- API health monitoring
- Error logs
- Performance metrics
Org Chart Specific
- Quality Metrics Viewer: View extraction quality metrics from the new table
- Model performance comparison (Gemini vs Claude)
- Success rates over time
- Quality score trends
- Suspicious name detection stats
- Extraction history per chart
- Credit usage analytics
- Template usage statistics
Database Management
- Connection pool status
- Query performance
- Migration history
- Shared tables overview
User Management
- View all users across projects
- Grant/revoke admin access
- View user activity across projects
- Manage credits globally
Option 2: Project-Specific Admin (Current Setup)
Keep separate admin dashboards per project
Advantages
β Simpler - already mostly built β Each team manages their own project β Clearer separation of concerns β Faster to implement enhancements
Disadvantages
β Duplicate code across projects β Hard to see cross-project insights β Canβt easily manage shared database β Multiple places to check health β More maintenance burden
Enhancements Needed
If staying project-specific, add to current /admin:
- Quality metrics viewing (new extraction_quality_metrics table)
- Model performance comparison charts
- Enhanced health monitoring
- API status indicators
- Error tracking
Final Recommendation
Build a unified admin site for the following reasons:
- Shared Database: All projects share one database β centralized management makes sense
- Cross-Project Analytics: Ability to see insights across all products
- Quality Metrics: New extraction quality metrics can be part of a larger analytics suite
- Health Monitoring: Monitor all 3 API endpoints from one dashboard
- Same Admin Users: Likely the same people administering all projects
- Scalability: Easier to add future projects
- Cost Effective: One admin site vs maintaining 3 separate admin sections
Implementation Plan (Future)
Phase 1: Foundation
- Create new Next.js app for admin site
- Set up authentication with Supabase
- Create base layout and navigation
- Implement role-based access control
Phase 2: Core Features
- Dashboard home with aggregate stats
- Health monitoring for all APIs
- User management across projects
- Database connection monitoring
Phase 3: Project-Specific Features
- Migrate org-chart admin features
- Add quality metrics viewing
- Add extraction history analysis
- Create project-specific sections for other projects
Phase 4: Analytics & Insights
- Cross-project analytics
- Revenue/credit tracking
- Usage trends and reports
- Automated alerts for issues
Current Action Items
For now, stay with project-specific admin and enhance it:
- β Quality metrics table created
- β Quality metrics stored on each extraction
- β³ Add quality metrics viewing page to
/admin - β³ Add model comparison charts
- β³ Enhance health endpoint to include more details
Revisit unified admin decision after core org-chart functionality is complete.
Questions to Answer Before Building Unified Admin
- Who are the admin users? (Same across all projects?)
- What permissions model? (Global admin vs project-specific admin?)
- Which project should be migrated first?
- Whatβs the timeline/priority?
- Who will maintain it?
- Budget for development?
Related Files
/workers/api/src/routes/admin.ts- Current admin API routes/apps/web/src/app/admin/page.tsx- Current admin dashboard/supabase/migrations/004_extraction_quality_metrics.sql- Quality metrics table/workers/api/src/services/extraction-validator.ts- Quality metrics calculator
Notes
- The shared database already serves 3 projects, so migration history management will be needed regardless of choice
- Consider monitoring costs across all projects from unified dashboard
- Could add Stripe revenue tracking if needed
- Health endpoints should be enhanced to include database connection status, API response times, etc.