Atlas Plan
Plans007 2026 02 20 Dashboard Service

Completed

  • T-001: Scaffold @services/dashboard config files
  • T-002: Update NETWORK.yml with dashboard entry
  • T-003: src/styles.css and src/router.tsx
  • T-004: Seed src/routeTree.gen.ts
  • T-005: src/routes/__root.tsx and src/routes/_app.tsx
  • T-006: lib/duck.ts — DuckDB server helper
  • T-007: lib/db.ts — Drizzle/LibSQL server helper
  • T-008: src/routes/_app/index.tsx — Overview
  • T-009: src/routes/_app/revenue.tsx — Revenue Comparison
  • T-010: src/routes/_app/orders.tsx — Key Comparison
  • T-011: src/routes/_app/programs.tsx — Program Progress
  • T-012: src/routes/_app/schools.tsx — School Progress
  • T-013: src/routes/_app/marketing.tsx — Channel Marketing
  • T-014: src/routes/_app/students.$id.tsx — Student Profile
  • T-015: src/routes/_app/organizations.$id.tsx — Organization Detail
  • T-016: bun install + type-check
  • T-017: Update AGENTS.md
  • T-018: Dev server verification

In Progress

  • None

Blocked

  • None

Pending

  • None

Learnings

  • TanStack Start pathless _app routes map to /, /revenue, /orders, etc. and conflict with a separate root index.tsx — resolved by keeping only the _app layout.
  • @duckdb/node-api requires excluding DuckDB bindings from Vite dep optimization to avoid .node prebundle errors.
  • Missing mart tables are handled gracefully in duck.ts — routes return empty state (HTTP 200) instead of crashing.
  • All routes verified: / /revenue /schools /marketing return HTTP 200 with real mart data from atlas.db.
  • mart_revenue for 2026-02: REAL Rp357M, NP Rp144M, ICC Rp79M, WLC_NON_ENGLISH Rp70M, TM Rp43M, WLC_ENGLISH Rp38M.
  • mart_channel_marketing: KBM 44.78% contribution, Social Media 43.28% for Feb 2026.

Questions

  • None

Next

  • Optional: run bun run dev --filter @services/dashboard and do a full browser walkthrough of all 8 routes
  • Optional: populate atlas-ops.db with real person/order data (requires sync → operational layer integration, future plan)
  • Optional: add a period selector that persists via URL search params

On this page