Atlas Plan
Plans010 2026 02 22 Slides Service

Completed

  • T-001: Create @config workspace package
  • T-002: Scaffold @services/slides directory structure
  • T-003: Configure Slidev project
  • T-004: Update monorepo configuration
  • T-005: Create custom layouts
  • T-006: Create base styles and lib utilities
  • T-007: Build useReportData() and useBrand() composables
  • T-008: Create DataTable and StatusBadge components
  • T-009: Create BarChart and KpiCard components
  • T-010: Create BrandLogo component
  • T-011: Cover slide template
  • T-012: Revenue comparison template
  • T-013: Key comparison template
  • T-014: Program progress template
  • T-015: School progress and channel marketing templates
  • T-016: Build CLI entry point
  • T-017: Build interactive picker
  • T-018: Create IONS and EPN brand themes
  • T-019: Migrate @services/present color constants to @config
  • T-020: PDF export via Playwright
  • T-021: PPTX export via Slidev native exporter
  • T-022: Update architecture documentation

In Progress

  • None

Blocked

  • None

Pending

  • None

Learnings

  • Slidev resolves custom layouts/ from the entry directory; report entries use theme: ../../../ to reuse shared layouts/components in @source/.
  • Base building blocks (layouts + composables + reusable components) are now in place, so template work can focus on report mapping instead of scaffolding.
  • pnpm slides -- dev --entity IONS --period 2026-02 now binds to port 15003 through CLI-managed Slidev args.
  • Slidev export works after adding playwright-chromium to the inner @source package dependencies.
  • Slidev native PPTX export (--format pptx) works in this environment without slidev-addon-pptx.

Questions

  • What fonts should the Atlas report slides use?
  • Should @config also export pipeline-related constants?

Next

  1. Optional: run visual QA on @services/slides PDF/PPTX output versus pptxgenjs baseline.
  2. Optional: decide final font direction for Atlas slides and update brand themes.
  3. Start next plan only after locking any follow-up tasks from the two open questions.

On this page