Scoreboard Feature Architecture โ
System Architecture Diagram โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Frontend (Svelte/TS) โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ /my/scoreboard โ โ /scoreboard โ โ
โ โ (Authenticated) โ โ (Public) โ โ
โ โ โ โ โ โ
โ โ - 4 Tabs โ โ - 4 Tabs โ โ
โ โ - Success Rates โ โ - Success Rates โ โ
โ โ - OTel Data โ โ - OTel Data โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ โ โ
โ โ โ โ
โ โโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโ โ โ
โ โ /my/scoreboard/[type]/[id] โ โ โ
โ โ โ โ โ
โ โ - Summary Cards โ โ โ
โ โ - Test History Chart โ โ โ
โ โ - OTel Span Table โ โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ โ
โ โ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโ
โ โ
โผ โผ
โโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโ
โ GET โ โ GET โ
โ /api/my/ โ โ /api/all-results โ
โ results โ โ โ
โโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโ
โ โ
โโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโ
โ Backend API (Go) โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ ScoreboardHandler โ โ
โ โ โ โ
โ โ - HandleMyResults() - HandleAllResults() โ โ
โ โ - buildScoreboardResponse() โ โ
โ โ - buildOTelData() โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ Aggregation Functions (Placeholder) โ โ
โ โ โ โ
โ โ - aggregateWalletResults() โ โ
โ โ - aggregateIssuerResults() โ โ
โ โ - aggregateVerifierResults() โ โ
โ โ - aggregatePipelineResults() โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโ
โ PocketBase Collections โ
โโโโโโโโโโโโโโโโโโโโโโโโโโค
โ - wallets โ
โ - wallet_actions โ
โ - credential_issuers โ
โ - verifiers โ
โ - use_cases_verif... โ
โ - pipelines โ
โ - pipeline_results โ
โโโโโโโโโโโโโโโโโโโโโโโโโโData Flow โ
User-Specific Results Flow โ
- User navigates to
/my/scoreboard - Frontend calls
GET /api/my/resultswith auth token - Backend validates authentication
- Backend gets user's organization ID
- Backend aggregates data for user's entities
- Backend formats response with:
- Summary tables (wallets, issuers, verifiers, pipelines)
- OpenTelemetry traces/spans
- Frontend displays tabbed interface with results
Public Results Flow โ
- User navigates to
/scoreboard(public) - Frontend calls
GET /api/all-results(no auth required) - Backend aggregates data for all entities
- Backend formats response in same structure
- Frontend displays public scoreboard
Detail Page Flow โ
- User clicks "View Details" on an entry
- Frontend navigates to
/my/scoreboard/{type}/{id} - Frontend calls
GET /api/my/results - Frontend filters results to specific entity
- Frontend displays:
- Summary metrics
- Test run history
- OpenTelemetry span details
OpenTelemetry Data Structure โ
OTelTracesData
โโโ ResourceSpans[]
โโโ Resource
โ โโโ Attributes[]
โ โโโ service.name: "credimi"
โ โโโ service.version: "1.0.0"
โโโ ScopeSpans[]
โโโ Scope
โ โโโ name: "credimi.scoreboard"
โ โโโ version: "1.0.0"
โโโ Spans[]
โโโ traceId
โโโ spanId
โโโ name
โโโ kind: "SPAN_KIND_INTERNAL"
โโโ startTimeUnixNano
โโโ endTimeUnixNano
โโโ attributes[]
โ โโโ entity.id
โ โโโ entity.name
โ โโโ entity.type
โ โโโ test.total_runs
โ โโโ test.success_count
โ โโโ test.failure_count
โ โโโ test.success_rate
โ โโโ test.last_run
โโโ status
โโโ code: "OK" | "ERROR"
โโโ messageIntegration Points โ
Current State โ
- โ API routes registered
- โ Frontend pages created
- โ Type definitions complete
- โ OpenTelemetry format implemented
- โ ๏ธ Using placeholder data
Next Steps โ
- Implement real database queries in aggregation functions
- Add filtering/sorting to API endpoints
- Implement chart visualization in detail pages
- Add export functionality
- Integrate with external OTel collectors (optional)
File Structure โ
credimi/
โโโ pkg/internal/apis/
โ โโโ RoutesRegistry.go (modified - added routes)
โ โโโ handlers/
โ โโโ scoreboard_handler.go (new - 356 lines)
โ โโโ scoreboard_handler_test.go (new - 143 lines)
โโโ webapp/src/routes/
โ โโโ (public)/scoreboard/
โ โ โโโ +page.svelte (new - public view)
โ โโโ my/scoreboard/
โ โโโ +page.svelte (new - 183 lines)
โ โโโ types.ts (new - type definitions)
โ โโโ [type]/[id]/
โ โโโ +page.svelte (new - detail view)
โโโ docs/
โโโ SCOREBOARD.md (new - documentation)
โโโ ARCHITECTURE.md (this file)