- Add status pages, incidents, badges, maintenance, bulk ops, and metrics - Add Docker packaging, env example, and frontend routes - Refresh GitHub workflows and project metadata
7.0 KiB
Beszel Enhanced - Codebase Analysis
Executive Summary
Backend compiles and frontend builds. Multiple critical gaps prevent "release ready" status. Domain WHOIS lookup is unreliable. Docker setup is broken. Frontend lacks routes for major features. Documentation is outdated.
Build Status
| Component | Status | Notes |
|---|---|---|
| Go Backend | Compiles | go build ./... exits 0 |
| Frontend (npm) | Builds | npm run build exits 0 with Lingui warnings |
| Docker Hub | Broken | Dockerfile in internal/ references ../go.mod |
| Docker Agent | Broken | Same path issue as hub |
| Tests | Partial | go test not fully validated |
Critical Issues
1. Domain WHOIS Lookup Unreliable
Impact: HIGH - Core feature from prompt.md fails.
hasValidData()returns false when RDAP returns partial data- Native
whoisbinary unavailable in scratch containers .devTLD RDAP via IANA bootstrap may fail parsingapplyWHOISData()setsd.Status = strings.Join(whois.Status, ", ")but scheduler then overwrites it with computed status - mismatch- No DNS-based fallback for domains without public WHOIS (common with privacy protection)
Files: internal/hub/domains/whois/lookup.go, internal/hub/domains/scheduler.go
2. Docker Build Broken
Impact: HIGH - Cannot containerize.
internal/dockerfile_hubandinternal/dockerfile_agentuseCOPY ../go.mod ../go.sum ./- Docker build context from
internal/cannot access parent../go.mod - No root-level
Dockerfileordocker-compose.yml - Makefile has no
docker-buildtargets
3. Frontend Missing Routes
Impact: HIGH - Users cannot access implemented features.
main.tsx only renders: home, system, domain, monitor, containers, smart, settings.
Missing routes:
forgot_password/request_otp(router defines, App ignores)- Status pages management (component exists:
status-pages-table) - Incident management (component exists but no route)
- Calendar view (component exists but no route)
- Badge management (backend only)
- Bulk import/export UI (backend only)
4. Navbar Missing Navigation
Impact: MEDIUM
No links to:
- Status Pages
- Incidents
- Calendar
- Domain/Monitor management from nav (only in dashboard sections)
5. Documentation Outdated
Impact: MEDIUM
- README references "fork of Beszel" - should be standalone product
- No Docker build instructions
- No feature list matching implemented capabilities
- Missing architecture diagram or API docs
6. gitignore Incomplete
Impact: LOW
- Missing
reference/(1256 items, 250MB+) - Missing
beszel-server,beszel-testbinaries - Missing
test_output/
7. Source Code TODOs
Impact: LOW
internal/hub/hub.go:184- "move to users package"internal/hub/settings/api.go:223- test notification stubinternal/entities/system/system.go- 3 TODOs about field cleanupinternal/hub/systems/systems_test.go- 3 TODOs about test relocation
8. Empty File
Impact: LOW
internal/site/src/lib/time.tsis 0 bytes. Build succeeds (not imported).
Feature Completeness vs Prompt.md
| Prompt Feature | Status | Gap |
|---|---|---|
| Domain expiry monitoring | Implemented | WHOIS lookup unreliable |
| SSL certificate monitoring | Implemented | Works |
| Registrar info | Implemented | Recognition sometimes fails |
| DNS records | Implemented | Works |
| IP addresses | Implemented | Works |
| Host info | Implemented | Works |
| Domain valuation | Partial | Fields exist, no auto-valuation |
| Tags / change history | Implemented | Works |
| Auto-recognition on add | Implemented | Auto-lookup in dialog |
| Website monitoring | Implemented | HTTP/TCP/Ping/DNS/Keyword/JSON |
| Response time graphs | Implemented | Recharts in monitor detail |
| Maintenance windows | Backend only | No frontend UI |
| Status pages | Backend + partial frontend | No route/page |
| Incident management | Backend + partial frontend | No route/page |
| Calendar view | Component only | No route/page |
| CSV export | Backend only | No frontend UI |
| Bulk import | Backend only | No frontend UI |
| Push notifications | Backend + SW | Works |
| PWA | Manifest + SW | Works |
| Prometheus metrics | Implemented | /metrics endpoint |
| Badge generator | Implemented | SVG badges |
| PageSpeed insights | Backend only | No frontend display |
File Inventory
Backend (Go)
internal/cmd/hub/hub.go- Entry pointinternal/hub/hub.go- Hub orchestrationinternal/hub/domains/- Domain API + scheduler + WHOISinternal/hub/monitors/- Monitor API + scheduler + checksinternal/hub/statuspages/- Status page APIinternal/hub/incidents/- Incident APIinternal/hub/maintenance/- Maintenance APIinternal/hub/badges/- Badge APIinternal/hub/bulk/- Bulk import/export APIinternal/hub/settings/- Settings APIinternal/hub/export/- CSV/Prometheus exportinternal/hub/notifications/- Notification providers (7 types)internal/hub/pagespeed/- PageSpeed checkerinternal/migrations/1_add_monitor_collections.go- DB schemainternal/entities/domain/domain.go- Domain typesinternal/entities/monitor/monitor.go- Monitor typesinternal/entities/incident/incident.go- Incident typesinternal/entities/statuspage/statuspage.go- Status page types
Frontend (React/TypeScript)
internal/site/src/main.tsx- App entry + routinginternal/site/src/components/router.tsx- Route definitionsinternal/site/src/components/routes/home.tsx- Dashboard (3 sections)internal/site/src/components/routes/domain.tsx- Domain detailinternal/site/src/components/routes/monitor.tsx- Monitor detailinternal/site/src/components/domains-table/- Domain list + dialoginternal/site/src/components/monitors-table/- Monitor list + dialoginternal/site/src/components/status-pages/- Status page components (orphaned)internal/site/src/components/calendar/calendar-view.tsx- Calendar (orphaned)internal/site/src/components/notifications/- Notification settingsinternal/site/src/lib/domains.ts- Domain API clientinternal/site/src/lib/monitors.ts- Monitor API clientinternal/site/src/lib/statuspages.ts- Status page API clientinternal/site/src/lib/incidents.ts- Incident API clientinternal/site/public/manifest.json- PWA manifestinternal/site/public/sw.js- Service worker
Recommendations
-
Fix WHOIS lookup - Add robust fallback using certificate expiry + DNS SOA as proxy for domain age. Improve RDAP parsing for .dev and newer TLDs. Bundle
whoisbinary or use pure-Go WHOIS library. -
Fix Docker - Move Dockerfiles to repo root. Add
docker-compose.ymlwith hub + agent services. Adddocker-buildtargets to Makefile. -
Wire frontend routes - Add status pages, incidents, calendar to
main.tsxrouting. Add nav links. -
Rewrite README - Product-focused, feature matrix, quick start with Docker, API overview.
-
Clean gitignore - Exclude
reference/, build artifacts, data dirs. -
Resolve TODOs - Either implement or remove before release.