This commit introduces major enhancements to Talk2Me: ## Database Integration - PostgreSQL support with SQLAlchemy ORM - Redis integration for caching and real-time analytics - Automated database initialization scripts - Migration support infrastructure ## User Authentication System - JWT-based API authentication - Session-based web authentication - API key authentication for programmatic access - User roles and permissions (admin/user) - Login history and session tracking - Rate limiting per user with customizable limits ## Admin Dashboard - Real-time analytics and monitoring - User management interface (create, edit, delete users) - System health monitoring - Request/error tracking - Language pair usage statistics - Performance metrics visualization ## Key Features - Dual authentication support (token + user accounts) - Graceful fallback for missing services - Non-blocking analytics middleware - Comprehensive error handling - Session management with security features ## Bug Fixes - Fixed rate limiting bypass for admin routes - Added missing email validation method - Improved error handling for missing database tables - Fixed session-based authentication for API endpoints 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
5.7 KiB
Talk2Me Admin Analytics Dashboard
A comprehensive analytics dashboard for monitoring and managing the Talk2Me application.
Features
Real-time Monitoring
- Request Volume: Track requests per minute, hour, and day
- Active Sessions: Monitor current active user sessions
- Error Rates: Real-time error tracking and analysis
- System Health: Monitor Redis, PostgreSQL, and ML services status
Analytics & Insights
- Translation & Transcription Metrics: Usage statistics by operation type
- Language Pair Analysis: Most popular translation combinations
- Response Time Monitoring: Track performance across all operations
- Cache Performance: Monitor cache hit rates for optimization
Performance Metrics
- Response Time Percentiles: P95 and P99 latency tracking
- Throughput Analysis: Requests per minute visualization
- Slow Request Detection: Identify and analyze performance bottlenecks
- Resource Usage: Memory and GPU utilization tracking
Data Management
- Export Capabilities: Download analytics data in JSON format
- Historical Data: View trends over time (daily, weekly, monthly)
- Error Logs: Detailed error tracking with stack traces
- Session Management: Track and manage user sessions
Setup
1. Database Setup
Initialize the analytics database tables:
python init_analytics_db.py
This creates the following tables:
error_logs
: Detailed error trackingrequest_logs
: Request-level analyticstranslation_logs
: Translation operation metricstranscription_logs
: Transcription operation metricstts_logs
: Text-to-speech operation metricsdaily_stats
: Aggregated daily statistics
2. Configuration
Set the following environment variables:
# Admin access token (required)
export ADMIN_TOKEN="your-secure-admin-token"
# Database configuration
export DATABASE_URL="postgresql://user:password@localhost/talk2me"
# Redis configuration
export REDIS_URL="redis://localhost:6379/0"
3. Access the Dashboard
- Navigate to:
http://your-domain/admin
- Enter your admin token
- Access the analytics dashboard
Dashboard Sections
Overview Cards
- Total Requests (all-time and today)
- Active Sessions (real-time)
- Error Rate (24-hour percentage)
- Cache Hit Rate (performance metric)
Charts & Visualizations
Request Volume Chart
- Toggle between minute, hour, and day views
- Real-time updates every 5 seconds
- Historical data for trend analysis
Language Pairs Donut Chart
- Top 6 most used language combinations
- Visual breakdown of translation patterns
Operations Bar Chart
- Daily translation and transcription counts
- 7-day historical view
Response Time Line Chart
- Average, P95, and P99 response times
- Broken down by operation type
Error Analysis
- Error type distribution pie chart
- Recent errors list with details
- Timeline of error occurrences
Performance Table
- Detailed metrics for each operation type
- Average response times
- 95th and 99th percentile latencies
Real-time Updates
The dashboard uses Server-Sent Events (SSE) for real-time updates:
- Automatic refresh every 5 seconds
- Connection status indicator
- Automatic reconnection on disconnect
Data Export
Export analytics data for external analysis:
- Click "Export Data" in the navigation
- Choose data type:
requests
: Request and operation countserrors
: Error logs and detailsperformance
: Response time metricsall
: Complete data export
API Endpoints
The admin dashboard provides the following API endpoints:
Authentication Required
All endpoints require the X-Admin-Token
header.
Available Endpoints
Overview Stats
GET /admin/api/stats/overview
Returns overall system statistics
Request Statistics
GET /admin/api/stats/requests/{timeframe}
Timeframes: minute
, hour
, day
Operation Statistics
GET /admin/api/stats/operations
Translation and transcription metrics
Error Statistics
GET /admin/api/stats/errors
Error types, timeline, and recent errors
Performance Statistics
GET /admin/api/stats/performance
Response times and throughput metrics
Data Export
GET /admin/api/export/{data_type}
Data types: requests
, errors
, performance
, all
Real-time Updates
GET /admin/api/stream/updates
Server-Sent Events stream for real-time updates
Mobile Optimization
The dashboard is fully responsive and optimized for mobile devices:
- Touch-friendly controls
- Responsive charts that adapt to screen size
- Collapsible navigation for small screens
- Optimized data tables for mobile viewing
Security
- Admin token authentication required
- Session-based authentication after login
- Separate CORS configuration for admin endpoints
- All sensitive data masked in exports
Troubleshooting
Dashboard Not Loading
- Check Redis and PostgreSQL connections
- Verify admin token is set correctly
- Check browser console for JavaScript errors
Missing Data
- Ensure analytics middleware is initialized
- Check database tables are created
- Verify Redis is running and accessible
Real-time Updates Not Working
- Check SSE support in your reverse proxy
- Ensure
X-Accel-Buffering: no
header is set - Verify firewall allows SSE connections
Performance Considerations
- Charts limited to reasonable data points for performance
- Automatic data aggregation for historical views
- Efficient database queries with proper indexing
- Client-side caching for static data
Future Enhancements
- WebSocket support for lower latency updates
- Customizable dashboards and widgets
- Alert configuration for thresholds
- Integration with external monitoring tools
- Machine learning for anomaly detection