Modern, professional admin dashboard for managing all Mithrandir services.
- β Real-time transcription job monitoring
- β Job status tracking (pending, processing, completed, failed)
- β Progress indicators and statistics
- β Job retry and delete functionality
- β Auto-refresh every 5 seconds
- β Search and filtering
- β Modern UI with shadcn/ui components
- π Delegation System Dashboard
- π― n8n Workflow Management
- π System Monitoring & Health
- ποΈ Database Management
- βοΈ Service Control Panel
- Framework: Vite + React 19 + TypeScript
- UI: shadcn/ui + Tailwind CSS
- Routing: TanStack Router
- State: TanStack Query (React Query)
- Tables: TanStack Table
- Icons: Lucide React
cd ~/Projects/mithrandir-admin
npm install# Start development server
npm run dev
# Build for production
npm run build
# Preview production build
npm run previewThe dashboard integrates with the Mithrandir Unified API, which acts as an API Gateway/BFF (Backend for Frontend):
- Unified API: http://100.77.230.53:8080 (API Gateway)
/api/dashboard/*- Dashboard statistics and activity/transcription/*- Transcription jobs (proxied to Palantir backend)/ssh-status- System monitoring/services/*- Service health checks
DO NOT point directly to backend services (e.g., port 9003). The Unified API provides:
- β Consistent API contracts
- β Centralized CORS, authentication, rate limiting
- β Service abstraction and flexibility
- β Data aggregation from multiple backend services
Environment variables in .env:
# β
CORRECT - Always use Unified API (port 8080)
VITE_APP_TITLE="Mithrandir Admin"
VITE_API_BASE_URL=http://100.77.230.53:8080
VITE_TRANSCRIPTION_API=http://100.77.230.53:8080/transcription
VITE_UNIFIED_API=http://100.77.230.53:8080
# Network Configuration
VITE_ALLOWED_HOSTS=dashboard.shire,admin.shire,mithrandir-admin.shire,localhost,100.77.230.53β INCORRECT - Do NOT use backend service ports directly:
# β WRONG - Do not point to backend services!
VITE_API_BASE_URL=http://100.77.230.53:9003
VITE_TRANSCRIPTION_API=http://100.77.230.53:9003/api/v1This project uses TypeScript types generated from the Transcription Palantir OpenAPI specification for type-safe API integration.
Regenerate types after Transcription Palantir API updates:
# Generate types from local API (default)
npm run generate:types
# Or specify custom API URL
TRANSCRIPTION_API_URL=http://palantir.tailnet:3001 npm run generate:typesGenerated file: src/types/palantir.d.ts
Usage example:
import type { paths, components } from './types/palantir';
type JobsResponse = paths['/api/v1/jobs']['get']['responses']['200']['content']['application/json'];
type Job = components['schemas']['Job'];When to regenerate:
- After updating Transcription Palantir API
- When TypeScript compilation errors indicate type mismatches
- Before deploying changes
See Transcription Palantir: Consumer Type Generation Guide for complete documentation.
src/
βββ routes/ # Route definitions
β βββ _authenticated/
β βββ transcription/ # Transcription routes
βββ features/ # Feature modules
β βββ transcription/ # Transcription feature
β βββ components/ # UI components
β βββ api/ # API integration
β βββ data/ # Types and constants
βββ components/ # Shared components
The admin dashboard is deployed on Mithrandir server:
- Service:
mithrandir-admin.service(systemd user service) - Port: 3000
- Location:
/home/nbost/Projects/mithrandir-admin/ - Auto-deploy: Push to
mainbranch triggers GitHub Actions deployment
# Local development
git add .
git commit -m "feat: your changes"
git push origin main
# GitHub Actions automatically:
# 1. Runs CI (lint, type-check, build)
# 2. Deploys to production via SSH
# 3. Restarts mithrandir-admin service# SSH to Mithrandir
ssh mithrandir
# Navigate to project
cd /home/nbost/Projects/mithrandir-admin
# Pull latest changes
git pull
# Install dependencies (if needed)
npm install
# Build
npm run build
# Restart service
systemctl --user restart mithrandir-admin- CI/CD Setup - GitHub Actions deployment configuration
- Deployment Guide - Detailed deployment instructions
- Unified API Integration - API architecture
Mithrandir Admin Dashboard (Port 3000)
β
β HTTP/REST
βΌ
Mithrandir Unified API (Port 8080)
β
βββ /api/dashboard/* β Dashboard stats
βββ /transcription/* β Transcription Palantir (Port 9003)
βββ /ssh-status β System monitoring
βββ /services/* β Service health
Built with β€οΈ for Mithrandir homelab infrastructure