routes.go: HTTP route registration with OAuth middleware
- Converted all handlers from (c *Crawler) to (d *Dashboard)
- Removed url.1440.news short URL handling (belongs in shortener service)
- Removed /internal/crawl endpoint (requires crawler)
main.go: Entry point for standalone dashboard service
- Uses NewDashboard with connection string from DATABASE_URL
- Starts stats update loop and HTTP server
Migrated from app/templates.go:
- PDSAccount type
- handleAccountsDirectory - public accounts listing page
- handleDashboard - main dashboard page
- handleAPIStats - JSON stats endpoint
- accountsDirectoryHTML and dashboardHTML templates
Note: handleRedirect not migrated - belongs in shortener service.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Migrated from app/dashboard.go:
- Dashboard struct with DB connection and stats caching
- DashboardStats, TLDStat, RecentFeed, DomainStat types
- Stats calculation methods (collectDomainStats, collectFeedStats)
- Background stats update loop
Note: Runtime rates (domains/min, etc.) not available in standalone
dashboard - these are crawler-specific metrics.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>