feat: public demo experience (Vue SPA with demo mode) #103

Merged
pyr0ball merged 11 commits from feature/demo-experience into main 2026-04-21 10:15:02 -07:00

11 commits

Author SHA1 Message Date
53c1b33b40 feat(demo): add UX designer resume, ATS optimizer snapshots, and company research briefs
Some checks failed
CI / Backend (Python) (push) Failing after 1m21s
CI / Frontend (Vue) (push) Failing after 18s
CI / Backend (Python) (pull_request) Failing after 1m10s
CI / Frontend (Vue) (pull_request) Failing after 22s
- Seed resumes table with a full UX designer base resume (Alex Rivera persona)
- Add ATS gap reports and optimized resumes for Spotify (job 1), Duolingo (job 2), NPR (job 3)
  - Each gap report highlights role-specific keyword opportunities (audio UX, gamification, public media)
  - Optimized resumes tailor the base resume framing to each company's emphasis
- Seed company_research for Asana (phone_screen), Notion (interviewing), Figma (hired)
  - Includes company_brief, ceo_brief, talking_points, tech_brief, funding_brief,
    competitors_brief, accessibility_brief for each
- Update demo/config/user.yaml career_summary to match UX designer persona
  - Fixes mismatch between "software engineer" summary and UX/design job seeds
  - Adds music and education mission preference notes
2026-04-21 10:14:37 -07:00
1c980cca51 docs: add screenshots and animated GIF to README
Six new screenshots (dashboard, card-stack review with approve/reject tint,
apply workspace, interviews kanban) plus an animated GIF of the swipe-review
flow. Adds demo link above the fold.
2026-04-21 10:14:37 -07:00
d02391d960 chore: update compose.demo.yml for Vue/FastAPI architecture
Replace the legacy Streamlit `app` service with a FastAPI `api` service
running dev_api:app on port 8601. The Vue SPA (nginx) proxies /api/ →
api:8601 internally so no host port is needed on the api container.

Move web service from port 8507 → 8504 to match the documented demo URL
(demo.circuitforge.tech/peregrine via Caddy → host:8504).
2026-04-21 10:14:37 -07:00
5bca5aaa20 fix: DemoBanner button contrast — use semantic surface token instead of hardcoded white
--color-primary in dark mode is a medium-light green (#6ab870); white on green
yields ~2.2:1 contrast (fails WCAG AA 4.5:1 minimum). Using --color-surface
(dark navy in dark mode, near-white in light mode) ensures the text always
contrasts strongly with the primary background regardless of theme.

Also tints banner background with 8% primary via color-mix() so it reads as
visually distinct from the page surface without being loud.
2026-04-21 10:14:37 -07:00
230cfb074c fix(demo): smoke-test fixes — card reset, toast error type, apply hint, text contrast
- JobCardStack: expose resetCard() to restore card after a blocked action
- JobReviewView: call resetCard() when approve/reject returns false; prevents
  card going blank after demo guard blocks the action
- useApi: add 'demo-blocked' to ApiError union; return truthy error from the
  403 interceptor so store callers bail early (no optimistic UI update)
- ApplyView: add HintChip to desktop split-pane layout (was mobile-only)
- HintChip: fix text color — --app-primary-light is near-white in light theme,
  causing invisible text; switch to --color-text for cross-theme contrast
- vite.config.ts: support VITE_API_TARGET env var for dev proxy override
- migrations/006: add date_posted, hired_feedback columns and references_ table
  (columns existed in live DB but were missing from migration history)
- DemoBanner: commit component and test (were untracked)
2026-04-21 10:14:37 -07:00
302033598c feat(demo): switch demo data volume to tmpfs, wire DEMO_SEED_FILE 2026-04-21 10:14:37 -07:00
ad26f02d5f feat(demo): add committed seed SQL and startup loader 2026-04-21 10:14:36 -07:00
03206aa34c feat(demo): add IS_DEMO write-block guard on mutating endpoints 2026-04-21 10:14:15 -07:00
55f464080f feat(demo): wire DemoBanner, WelcomeModal, HintChip into app + views 2026-04-21 10:14:15 -07:00
d96cdfa89b feat(demo): add HintChip component with per-view localStorage dismiss 2026-04-21 10:14:15 -07:00
a16d562e06 feat(demo): add WelcomeModal with localStorage gate 2026-04-21 10:14:15 -07:00