LifeRPG_v2.0/modern/ops/grafana-dashboard.json
TLimoges33 7fe4ae5365
🧙‍♂️ Transform LifeRPG into The Wizard's Grimoire - Production-Ready Application
 Major Features Added:
- Complete magical theming and rebranding from LifeRPG to The Wizard's Grimoire
- Production-grade React frontend with Tailwind CSS v4 and magical aesthetics
- Comprehensive analytics dashboard with Recharts integration (ScryingPortal)
- Push notifications system with PWA service worker support
- Drag & drop functionality using @dnd-kit for habit reordering
- Social features with friends system and leaderboards
- Performance optimization tools and monitoring
- Mobile app enhancement with PWA installation support

🏗️ Technical Infrastructure:
- Advanced service worker with offline support and background sync
- Zustand state management for scalable application state
- Production-ready UI component system with enhanced Button, Card, Input
- Progressive Web App (PWA) with manifest and app installation
- FastAPI backend with comprehensive API endpoints
- Docker containerization and CI/CD pipeline setup

📱 Progressive Web App Features:
- Offline functionality with intelligent caching
- Push notification support for habit reminders
- App installation on mobile and desktop platforms
- Background sync for offline data management
- Performance monitoring and optimization tools

🎨 User Experience:
- Magical wizard/grimoire theming throughout application
- Responsive design optimized for all device sizes
- Drag & drop habit management with smooth animations
- Interactive analytics with multiple chart types
- Social connectivity with friends and competitive features
- Comprehensive notification and performance settings

🔧 Developer Experience:
- Modern development stack with Vite and React
- Comprehensive testing setup and CI/CD pipelines
- Code quality tools with pre-commit hooks
- Docker development environment
- Detailed documentation and implementation guides

This represents a complete transformation from prototype to production-ready application with enterprise-grade features and magical user experience.
2025-08-30 17:32:42 +00:00

336 lines
9.0 KiB
JSON

{
"annotations": {
"list": [
{
"builtIn": 1,
"datasource": {
"type": "grafana",
"uid": "-- Grafana --"
},
"enable": true,
"hide": true,
"iconColor": "rgba(0, 211, 255, 1)",
"name": "Annotations & Alerts",
"type": "dashboard"
}
]
},
"editable": true,
"fiscalYearStartMonth": 0,
"graphTooltip": 0,
"id": null,
"links": [],
"liveNow": false,
"panels": [
{
"datasource": {
"type": "prometheus",
"uid": "PROM_DS"
},
"fieldConfig": {
"defaults": {},
"overrides": []
},
"gridPos": {
"h": 8,
"w": 12,
"x": 0,
"y": 0
},
"id": 1,
"options": {
"legend": {
"displayMode": "list"
},
"tooltip": {
"mode": "single"
}
},
"targets": [
{
"expr": "sum by (method, path, status) (rate(http_requests_total[5m]))",
"legendFormat": "{{method}} {{path}} {{status}}"
}
],
"title": "HTTP Requests (rate)",
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "PROM_DS"
},
"fieldConfig": {
"defaults": {},
"overrides": []
},
"gridPos": {
"h": 8,
"w": 12,
"x": 12,
"y": 0
},
"id": 2,
"options": {
"legend": {
"displayMode": "list"
},
"tooltip": {
"mode": "single"
}
},
"targets": [
{
"expr": "histogram_quantile(0.95, sum by (le, method, path) (rate(http_request_duration_seconds_bucket[5m])))",
"legendFormat": "p95 {{method}} {{path}}"
}
],
"title": "Request Latency p95",
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "PROM_DS"
},
"fieldConfig": {
"defaults": {},
"overrides": []
},
"gridPos": {
"h": 8,
"w": 12,
"x": 0,
"y": 8
},
"id": 3,
"targets": [
{
"expr": "sum(http_requests_in_progress)",
"legendFormat": "in-progress"
}
],
"title": "Requests In-Progress",
"type": "stat"
},
{
"datasource": {
"type": "prometheus",
"uid": "PROM_DS"
},
"fieldConfig": {
"defaults": {},
"overrides": []
},
"gridPos": {
"h": 8,
"w": 12,
"x": 12,
"y": 8
},
"id": 4,
"targets": [
{
"expr": "sum by (status) (rate(jobs_processed_total[5m]))",
"legendFormat": "{{status}}"
}
],
"title": "Jobs Processed (rate)",
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "PROM_DS"
},
"fieldConfig": {
"defaults": {},
"overrides": []
},
"gridPos": {
"h": 8,
"w": 12,
"x": 0,
"y": 16
},
"id": 5,
"targets": [
{
"expr": "sum by (provider, result) (rate(integration_sync_total[5m]))",
"legendFormat": "{{provider}} {{result}}"
}
],
"title": "Integration Syncs (rate)",
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "PROM_DS"
},
"fieldConfig": {
"defaults": {},
"overrides": []
},
"gridPos": {
"h": 8,
"w": 12,
"x": 12,
"y": 16
},
"id": 6,
"targets": [
{
"expr": "sum by (provider, verified) (rate(webhook_events_total[5m]))",
"legendFormat": "{{provider}} {{verified}}"
}
],
"title": "Webhook Events (rate)",
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "PROM_DS"
},
"fieldConfig": {
"defaults": {},
"overrides": []
},
"gridPos": {
"h": 8,
"w": 12,
"x": 0,
"y": 24
},
"id": 7,
"targets": [
{
"expr": "sum by (integration_id, result) (rate(integration_sync_by_integration_total[5m]))",
"legendFormat": "id={{integration_id}} {{result}}"
}
],
"title": "Integration Syncs by Integration (rate)",
"type": "timeseries"
},
{
"datasource": {
"type": "loki",
"uid": "LOKI_DS"
},
"gridPos": {
"h": 10,
"w": 24,
"x": 0,
"y": 32
},
"id": 8,
"options": {
"dedupStrategy": "none",
"enableLogDetails": true,
"prettifyLogMessage": true,
"showCommonLabels": false,
"showLabels": true,
"sortOrder": "Descending"
},
"targets": [
{
"expr": "{job=\"liferpg\"} |= `\"type\":\"job\"`",
"queryType": "range"
}
],
"title": "Job Logs (structured)",
"type": "logs"
},
{
"datasource": {
"type": "prometheus",
"uid": "PROM_DS"
},
"fieldConfig": {
"defaults": {},
"overrides": []
},
"gridPos": {
"h": 6,
"w": 12,
"x": 0,
"y": 42
},
"id": 9,
"targets": [
{
"expr": "sum by (reason) (rate(sync_enqueue_skips_total[5m]))",
"legendFormat": "skip {{reason}}"
}
],
"title": "Sync Enqueue Skips (rate)",
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "PROM_DS"
},
"fieldConfig": {
"defaults": {},
"overrides": []
},
"gridPos": {
"h": 6,
"w": 12,
"x": 12,
"y": 42
},
"id": 10,
"targets": [
{
"expr": "sum by (provider) (sync_queue_depth)",
"legendFormat": "depth {{provider}}"
}
],
"title": "Sync Queue Depth",
"type": "stat"
},
{
"datasource": {
"type": "prometheus",
"uid": "PROM_DS"
},
"fieldConfig": {
"defaults": {},
"overrides": []
},
"gridPos": {
"h": 6,
"w": 12,
"x": 0,
"y": 48
},
"id": 11,
"targets": [
{
"expr": "sum by (provider) (sync_inflight)",
"legendFormat": "inflight {{provider}}"
}
],
"title": "Sync In-Flight",
"type": "stat"
}
],
"schemaVersion": 38,
"style": "dark",
"tags": [
"liferpg"
],
"templating": {
"list": []
},
"time": {
"from": "now-6h",
"to": "now"
},
"timezone": "browser",
"title": "LifeRPG Backend",
"version": 1
}