Skip to content

Commit 76242a7

Browse files
Feat/dashboard UI redesign (#65)
* fix(mypy/ruff): correct extractor extend path and sync dev dependencies - Fix extractor/pyproject.toml: change `../../pyproject.toml` to `../pyproject.toml` so ruff/mypy/coverage/pytest tool configs correctly extend from the root - Run `uv sync --all-extras` to install httpx and prometheus-client, resolving mypy `import-not-found` errors for dashboard service Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * feat(dashboard): redesign UI with dark Tailwind theme from Stitch design - Complete rewrite of index.html: dark theme via Tailwind CDN, Inter/JetBrains Mono fonts, Material Symbols icons; logo in #app-logo div with prominent comment block for easy swapping - Complete rewrite of dashboard.js: remove Chart.js dependency, replace with CSS height bars (queue size metrics) and SVG stroke-dashoffset circular gauges (processing rates); WebSocket connection and all real-time data updates preserved - Simplify styles.css: retain only base reset and .connection-status / .status-indicator / .log-entry stubs for Playwright test selector compatibility - Update test_dashboard_ui.py: align selectors with new HTML structure (#service-{name} IDs, #db-neo4j, #db-postgresql, Queue Size Metrics / Processing Rates section headings, responsive design viewport checks) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * chore(extractor): remove pyproject.toml from pure Rust project The extractor is a Rust binary with no Python code, no Python tests, and is intentionally excluded from the uv workspace and coverage source tracking. Having a pyproject.toml was misleading and caused ruff to fail when the extend path resolved to a non-existent parent directory. - Delete extractor/pyproject.toml - scripts/update-project.sh: remove extractor/*/pyproject.toml from suggested git add command - scripts/README.md: fix component counts (8→7 Python files, 15→14 total), remove stale extractor/pyextractor and extractor/extractor directory references, list actual Python service directories Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * docs: update all docs to reflect current architecture Remove all references to the removed Discovery/ML service and the former Python extractor across all documentation files. README.md - Replace "AI Discovery Engine" bullet with "Interactive Explorer" - Remove "ML-Powered Discovery" from Key Features dashboard/README.md - Remove discovery service from monitored services list and WebSocket JSON example - Remove DISCOVERY_URL env var - Fix POSTGRES_ADDRESS: postgres:5433 → postgres:5432 (internal Docker port) - Update frontend stack: Tailwind CSS replacing "Vanilla JavaScript" - Fix static file name: script.js → dashboard.js - Remove false "WebSocket connections are authenticated" security claim extractor/README.md - Rewrite intro: remove "reimplementation of the Python-based extractor" framing — this IS the extractor - Remove "Integration" section's Python extractor references - Remove stale "Migration from Python Extractor" section entirely - Fix coverage command: cargo-tarpaulin → cargo-llvm-cov docs/monitoring.md - Fix "Python Extractor" → "Extractor" in log example - Replace all `uv run task X` with `just X` (taskipy is not installed; project uses justfile) - Update Last Updated date to 2026-02-21 docs/troubleshooting.md - Rename "Python/Extractor Download Failures" → "Extractor Download Failures" - Remove ML model cache chown block from Permission Denied section - Fix health check list: remove Discovery ports 8004/8005, add Explore 8007 - Fix port conflict netstat/lsof: replace 8004/8005 with 8006/8007 - Remove "ML model operations" from DEBUG level log categories - Fix broken link: logging-configuration.md → logging-guide.md - Rewrite "Neo4j Schema Warnings" to not mention Discovery service - Remove entire "Discovery Service Issues" section (asyncpg, cache dirs, TRANSFORMERS_CACHE — all artifacts of a removed ML service) - Rename "Extractor Issues (Python/Rust)" → "Extractor Issues" - Remove "Switch to Extractor (20-400x faster)" note — Rust IS the extractor - Fix "Discovery service timeouts" → "Explore service timeouts" docs/recent-improvements.md - Fix batch processing config defaults: 100/5.0 → 500/2.0 (actual deployed values) - Add Dashboard UI Redesign entry documenting the Tailwind/SVG/CSS-bar redesign Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent 3a8d1cd commit 76242a7

13 files changed

Lines changed: 844 additions & 1102 deletions

File tree

README.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ Discogsography transforms monthly Discogs data dumps (50GB+ compressed XML) into
3232

3333
- **🔗 Neo4j Graph Database**: Navigate complex music industry relationships
3434
- **🐘 PostgreSQL Database**: High-performance queries and full-text search
35-
- **🤖 AI Discovery Engine**: Intelligent recommendations and analytics
35+
- **🔍 Interactive Explorer**: Graph visualisation, trends, and path discovery
3636
- **📊 Real-time Dashboard**: Monitor system health and processing metrics
3737

3838
Perfect for music researchers, data scientists, developers, and music enthusiasts who want to explore the world's largest music database.
@@ -109,7 +109,6 @@ graph TD
109109
- **🐋 Container Security**: Non-root users, read-only filesystems, dropped capabilities
110110
- **📝 Type Safety**: Full type hints with strict mypy validation and Bandit security scanning
111111
- **✅ Comprehensive Testing**: Unit, integration, and E2E tests with Playwright
112-
- **🧠 ML-Powered Discovery**: Semantic search, graph algorithms (PageRank, community detection)
113112

114113
## 🚀 Quick Start
115114

dashboard/README.md

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ Real-time monitoring dashboard for the Discogsography system with WebSocket supp
66

77
The dashboard service provides a web-based interface to monitor all Discogsography services, including:
88

9-
- Service health status (extractor, graphinator, tableinator, discovery)
9+
- Service health status (extractor, graphinator, tableinator)
1010
- RabbitMQ queue metrics and consumer counts
1111
- PostgreSQL and Neo4j database statistics
1212
- Real-time activity logs
@@ -15,7 +15,7 @@ The dashboard service provides a web-based interface to monitor all Discogsograp
1515
## Architecture
1616

1717
- **Backend**: FastAPI with WebSocket support
18-
- **Frontend**: Vanilla JavaScript with dynamic updates
18+
- **Frontend**: Tailwind CSS, Inter/JetBrains Mono fonts, SVG circular gauges, CSS bar charts
1919
- **Port**: 8003 (configurable via `DASHBOARD_PORT`)
2020
- **Health Endpoint**: `/health` (port 8003)
2121

@@ -32,14 +32,13 @@ DASHBOARD_PORT=8003 # Port for web interface
3232
EXTRACTOR_URL=http://extractor:8000
3333
GRAPHINATOR_URL=http://graphinator:8001
3434
TABLEINATOR_URL=http://tableinator:8002
35-
DISCOVERY_URL=http://discovery:8004
3635

3736
# Database connections
3837
NEO4J_ADDRESS=neo4j:7687
3938
NEO4J_USERNAME=neo4j
4039
NEO4J_PASSWORD=discogsography
4140

42-
POSTGRES_ADDRESS=postgres:5433
41+
POSTGRES_ADDRESS=postgres:5432
4342
POSTGRES_USERNAME=discogsography
4443
POSTGRES_PASSWORD=discogsography
4544
POSTGRES_DATABASE=discogsography
@@ -67,8 +66,7 @@ The dashboard broadcasts updates every 5 seconds with the following data:
6766
"services": {
6867
"extractor": { "status": "healthy", "health_url": "..." },
6968
"graphinator": { "status": "healthy", "health_url": "..." },
70-
"tableinator": { "status": "healthy", "health_url": "..." },
71-
"discovery": { "status": "healthy", "health_url": "..." }
69+
"tableinator": { "status": "healthy", "health_url": "..." }
7270
},
7371
"queues": {
7472
"labels": { "messages": 0, "consumers": 1 },
@@ -116,9 +114,9 @@ uv run pytest tests/dashboard/test_dashboard_api_integration.py -v
116114

117115
The frontend consists of static files in the `static/` directory:
118116

119-
- `index.html` - Main dashboard page
120-
- `styles.css` - Dashboard styling
121-
- `script.js` - WebSocket client and UI updates
117+
- `index.html` - Main dashboard page (Tailwind CSS, dark theme)
118+
- `styles.css` - Base reset and legacy selector stubs
119+
- `dashboard.js` - WebSocket client and UI update logic
122120

123121
## Docker
124122

@@ -139,6 +137,5 @@ The dashboard itself exposes metrics at `/api/metrics` for monitoring its own he
139137
## Security
140138

141139
- CORS is configured for production use
142-
- WebSocket connections are authenticated
143140
- All external service calls have timeouts
144141
- Sensitive configuration is loaded from environment variables

0 commit comments

Comments
 (0)