feat: empty states, onboarding checklist, PDF exports, and supporting data #114

Merged
chihlasm merged 16 commits from feat/backend-foundation-empty-states-exports into main 2026-03-18 00:42:30 +00:00
chihlasm commented 2026-03-17 06:13:53 +00:00 (Migrated from github.com)

Summary

  • Illustrative empty states across 8 pages with benefit-oriented copy, SVG illustrations, and "Learn more" links to in-app guides
  • Onboarding starter checklist on the dashboard — solo (4 items) and team (5 items) variants with auto-completion tracking and dismiss
  • Team branding settings — logo upload (PNG/JPG/SVG, 2MB max) + company display name, stored as base64 in DB
  • PDF export via WeasyPrint — branded session reports with metadata grid, troubleshooting timeline, and supporting data
  • Supporting data capture — text snippets and screenshots during sessions, integrated into all 5 export formats (markdown, text, HTML, PSA, PDF)
  • 2 new user guides (Script Templates, PSA Setup) added to existing guide system

Backend

  • 2 Alembic migrations (onboarding/branding columns + session_supporting_data table)
  • 3 new endpoint modules: onboarding status, team branding CRUD, supporting data CRUD
  • WeasyPrint PDF generation with Jinja2 template and team branding logic
  • 25 new integration tests

Frontend

  • EmptyState component upgraded with illustration and learnMoreLink props
  • 7 SVG brand-colored illustrations
  • OnboardingChecklist widget with progress bar and auto-hide
  • SupportingDataPanel + AddSupportingDataModal in session runners
  • PDF download-only mode in ExportPreviewModal
  • BrandingSettings component in Account Settings
  • 7 Vitest tests for EmptyState

Test plan

  • Backend: pytest tests/test_onboarding.py tests/test_branding.py tests/test_supporting_data.py tests/test_pdf_export.py
  • Frontend build: npm run build passes cleanly
  • Vitest: npx vitest run src/components/common/__tests__/EmptyState.test.tsx
  • Manual: verify empty states render on pages with no data
  • Manual: verify onboarding checklist appears for new users, auto-checks items
  • Manual: verify PDF export downloads with branding
  • Manual: verify supporting data can be added during sessions

🤖 Generated with Claude Code

## Summary - **Illustrative empty states** across 8 pages with benefit-oriented copy, SVG illustrations, and "Learn more" links to in-app guides - **Onboarding starter checklist** on the dashboard — solo (4 items) and team (5 items) variants with auto-completion tracking and dismiss - **Team branding settings** — logo upload (PNG/JPG/SVG, 2MB max) + company display name, stored as base64 in DB - **PDF export via WeasyPrint** — branded session reports with metadata grid, troubleshooting timeline, and supporting data - **Supporting data capture** — text snippets and screenshots during sessions, integrated into all 5 export formats (markdown, text, HTML, PSA, PDF) - **2 new user guides** (Script Templates, PSA Setup) added to existing guide system ### Backend - 2 Alembic migrations (onboarding/branding columns + session_supporting_data table) - 3 new endpoint modules: onboarding status, team branding CRUD, supporting data CRUD - WeasyPrint PDF generation with Jinja2 template and team branding logic - 25 new integration tests ### Frontend - EmptyState component upgraded with `illustration` and `learnMoreLink` props - 7 SVG brand-colored illustrations - OnboardingChecklist widget with progress bar and auto-hide - SupportingDataPanel + AddSupportingDataModal in session runners - PDF download-only mode in ExportPreviewModal - BrandingSettings component in Account Settings - 7 Vitest tests for EmptyState ## Test plan - [ ] Backend: `pytest tests/test_onboarding.py tests/test_branding.py tests/test_supporting_data.py tests/test_pdf_export.py` - [ ] Frontend build: `npm run build` passes cleanly - [ ] Vitest: `npx vitest run src/components/common/__tests__/EmptyState.test.tsx` - [ ] Manual: verify empty states render on pages with no data - [ ] Manual: verify onboarding checklist appears for new users, auto-checks items - [ ] Manual: verify PDF export downloads with branding - [ ] Manual: verify supporting data can be added during sessions 🤖 Generated with [Claude Code](https://claude.com/claude-code)
railway-app[bot] commented 2026-03-17 06:14:17 +00:00 (Migrated from github.com)

🚅 Deployed to the patherly-pr-114 environment in selfless-grace

Service Status Web Updated (UTC)
hopeful-liberation Success (View Logs) Web Mar 17, 2026 at 3:48 pm
patherly Success (View Logs) Web Mar 17, 2026 at 3:47 pm
<!-- railway-bot-comment-version=2 --> <!-- railway-project-id="22b9b58c-271b-42e5-a10e-6fdec8d00134" railway-project-name="selfless-grace" --> 🚅 Deployed to the [patherly-pr-114](https://railway.com/project/22b9b58c-271b-42e5-a10e-6fdec8d00134?environmentId=9a669a5d-b2eb-46c1-9d6c-a78ef2e2ce9c) environment in **[selfless-grace](https://railway.com/project/22b9b58c-271b-42e5-a10e-6fdec8d00134)** | **Service** | **Status** | **Web** | **Updated** (UTC) | | :--- | :--- | :--- | :--- | | hopeful-liberation | ✅ Success ([View Logs](https://railway.com/project/22b9b58c-271b-42e5-a10e-6fdec8d00134/service/e1db2ee3-d241-4f45-abe4-c9c5fdf483d5?id=8f0bc44d-a66a-4c66-9bc6-1cc07d0bdb76&environmentId=9a669a5d-b2eb-46c1-9d6c-a78ef2e2ce9c)) | [Web](https://hopeful-liberation-patherly-pr-114.up.railway.app) | Mar 17, 2026 at 3:48 pm | | patherly | ✅ Success ([View Logs](https://railway.com/project/22b9b58c-271b-42e5-a10e-6fdec8d00134/service/95f556ff-5264-4116-a0c2-618a2fc53ba4?id=bd0a7673-6092-4040-9324-09c096a1e425&environmentId=9a669a5d-b2eb-46c1-9d6c-a78ef2e2ce9c)) | [Web](https://patherly-patherly-pr-114.up.railway.app) | Mar 17, 2026 at 3:47 pm |
Sign in to join this conversation.