Appearance
CasTyou — Project Roadmap & Implementation Tickets
Generated: 2026-05-20
Source: Features Doc v0.1, Figma (8H8gbRCKp4HWc41tPWaUSK), castyou-backend & castyou-frontend repos
How to use: Each ticket has a[ ]checkbox. Mark[x]when the ticket is fully implemented and reviewed. Claude Code should read this file before starting any feature work.
Current State Summary
| Area | Status |
|---|---|
| Backend — Auth (email/password, JWT, RBAC) | ✅ Done |
| Backend — Talent Profile CRUD (basic fields) | ✅ Complete (BE-TALENT-004/005 done) |
| Backend — Producer Profile CRUD (basic fields) | ✅ Complete (BE-PRODUCER-002 done) |
| Backend — Jobs CRUD + pagination | ✅ Complete (BE-JOB-004 done) |
Backend — Talent job match feed (jobsForTalent) | ❌ Missing (BE-JOB-005) |
| Backend — PetJob model + CRUD + pet-owner match feed | ❌ Missing (BE-PETJOB-001/002) |
Backend — jobListing union resolver for /jobs/:id | ❌ Missing (BE-JOB-006) |
Frontend — Role-dispatched /jobs + match grid + producer table | ❌ Missing (FE-JOBS-006/007/008) |
Frontend — Role+type-aware /jobs/:id detail | ❌ Missing (FE-JOBS-009) |
| Backend — Waitlist | ✅ Done |
| Backend — Discover Feed (AI scoring) | ✅ Done |
| Backend — Search Talents (multi-field filters) | ✅ Done (BE-SEARCH-001) |
| Backend — Job Flier Generation (stub) | ✅ Done (BE-FLIER-001 done) |
| Backend/Frontend — Enhanced Flier Generation (FlierConfig, AI layers, canvas editor) | ✅ Done (Epic 31) |
| Backend — Media Upload (S3 presigned URLs) | ✅ Done (BE-REEL-001) |
| Backend — Social Login (OAuth) | ❌ Missing |
| Backend — 2FA | ❌ Missing |
| Backend — Identity liveness verification | ❌ Missing |
| Backend — Application model & pipeline | ❌ Missing |
| Backend — Producer shortlist / swipe actions | ❌ Missing |
| Backend — AI Matching (9-factor) | ✅ Done (BE-DISCOVER-003) |
| Backend — Notifications | ✅ Done (BE-NOTIF-002 done — new types added) |
| Backend — Messaging | ✅ Done (BE-MSG-001 done) |
| Backend — Groups (full model) | ✅ Done (BE-GROUPS-001/002 done) |
| Backend — Pet Owner Profile + Pet CRUD | ✅ Done |
| Backend — Agency tier | ❌ Missing |
| Backend — CasTars/Bounty reward system | ❌ Missing |
| Backend — Admin reporting & appeals (BE-ADMIN-002) | ✅ Done |
| Backend — Admin job moderation + broadcast | ✅ Done |
| Casting Submission / Auditions (Epic 14) — all backend + frontend | ✅ Rebuilt as Epic 49 (On-System Casting) 2026-06-29 — BUILT behind CASTING flag (off), pending deploy + verification. See Epic 49. |
| Frontend — Landing page (Next.js, basic) | ✅ Done (needs DS migration) |
| Frontend — Auth pages (Login, Register) | ✅ Done |
| Frontend — Admin pages (Users, Jobs, Reports, Profile) | ✅ Done (FE-ADMIN-002 done — activity logs, merge, analytics, config, concierge added) |
| Frontend — Design System (Button, Input, etc.) | ✅ Done |
| Frontend — Migrate local app components to design system | ✅ Done (DS-016) |
| Frontend — Discover Feed UI | ✅ Done |
| Frontend — Jobs Board UI | ✅ Complete (FE-JOBS-005 done) |
| Frontend — Profile pages (Talent/Producer) | ✅ Complete (FE-TALENT-006, FE-PRODUCER-002 done) |
| Frontend — Pet Owner pages (profile, pets list, detail, edit) | ✅ Complete (FE-PETOWNER-001, FE-PETOWNER-002 done) |
| Frontend — Reel Editor UI (full-screen editor + queued export) | ✅ Implemented (Epic 7 v2; FE-REEL-001/002) |
| Backend/Frontend — Unified Talent Portfolio (MediaItem CRUD, image/video/link, public/private, replaces Reel) | ✅ Done (Epic 34) |
| Backend/Frontend — Talent Applications Dashboard (My Applications table + producer shortlists + job status) | ✅ Done (Epic 36) |
| Backend/Frontend — Error Boundaries & Crash Reporting | ❌ Missing |
| Platform — Performance, Security & Accessibility Hardening (audits + remediation + CI guards) | ❌ Missing (Epic 38) |
| Frontend — Job Flier Generator UI | ✅ Done (FE-FLIER-001/002 done) |
| Frontend — Groups UI | ✅ Done (FE-GROUPS-001 done) |
| Backend — TalentProfile missing fields (gender, username, accent, yearsExp, training) | ✅ Done (BE-TALENT-004/005) |
| Backend — TalentProfile Location & Availability extended fields (salary, passport, equipment) | ✅ Done (BE-TALENT-004/005) |
| Backend — ProducerProfile missing fields (focus, affiliations, favorites, location, activity) | ✅ Done (BE-PRODUCER-002) |
| Backend — Job missing fields (experienceLevel, age, gender, union, languages, roles) | ✅ Done (BE-JOB-004) |
| Backend — Messaging (secure DMs between talent and producers) | ✅ Done (BE-MSG-001 done) |
| Frontend — Messaging UI | ✅ Done (FE-MSG-001 done) |
| Backend — Reel Editor render pipeline (ReelDraft manifest, queued ffmpeg, logo watermark) | ✅ Implemented (Epic 7 v2; BE-REEL-001/002) |
| Backend — Reel ready notification (REEL_READY) | ✅ Implemented (Epic 7 v2; BE-REEL-003) |
| Backend — Groups activity feed, announcements, events, group job applications | ✅ Done (BE-GROUPS-002 done) |
| Frontend — Groups activity feed, events, group apply UI | ✅ Done (FE-GROUPS-001 done) |
| Backend — Publication Feed (Post, likes, comments, media pipeline) | ✅ Done (BE-FEED-001/002 done) |
| Frontend — Publication Feed (feed screen, media picker, composer) | ✅ Done (FE-FEED-001/002 done) |
| Backend/Frontend — Export Pitch (Face Sheet, Full Info Sheet, Presentation Deck) | ✅ Done (BE-EXPORT-001, FE-EXPORT-001 done) |
| Backend/Frontend — Producer Folders (Save for Later with custom folders) | ✅ Done (BE-FOLDERS-001, FE-FOLDERS-001 done) |
| Backend/Frontend — Profile Analytics for Talent (views, who viewed, saves, trend alerts) | ❌ Missing |
| Backend/Frontend — System Posts (CasTyou Official) | ✅ Done (BE-SYSPOST-001/002/003, FE-SYSPOST-001/002 done) |
| Backend/Frontend — Bounty Hunter (producer referral bounties, CasTars on hire) | ✅ Done (Epic 21 — BE-BOUNTY-001, FE-BOUNTY-001 done 2026-06-14) |
| Backend/Frontend — CAS AI Concierge (social media talent scouting) | ❌ Missing |
| Backend/Frontend — Personal Concierge (CasTars-powered casting requests) | ❌ Missing |
| Frontend — Onboarding flow | ✅ Done |
| Frontend — Notifications UI | ✅ Done |
| Frontend — Admin profile page (2FA, password) | ✅ Done |
| Backend/Frontend — Admin Impersonation (tab-isolated session + full audit) | ✅ Done (BE-IMPERSONATE-001/002, FE-IMPERSONATE-001/002/003 done) |
| Backend/Frontend — Reports & Help (support tickets with thread + notifications) | ✅ Done (BE-SUPPORT-001/002, FE-SUPPORT-001/002 done) |
| Backend/Frontend — Admin Job Detail Review (edit with audit reason + deactivate) | ✅ Done (BE-ADMIN-JOB-001, FE-ADMIN-JOB-001 done) |
| GraphQL codegen (CC-005) | ✅ Done |
Critical Rule — Design System First
Every component in
apps/appandapps/landingMUST be sourced from@castyou/design-system.
If a component does not exist inpackages/design-system/src/components/, create it there first, export it frompackages/design-system/src/index.ts, then import it in the app.
Never duplicate components locally in apps. Never copy-paste raw Tailwind classes that belong to a reusable pattern.
Critical Rule — Tests Are Not Optional
Every new feature ticket must ship with tests. A ticket is not done until its tests pass.
Backend
- Every new resolver mutation and query gets a test in
src/__tests__/resolvers/<resolver>.test.ts. - Every new service function with non-trivial logic gets a test in
src/__tests__/services/<service>.test.ts. - Use the existing helpers:
makeCtx(),makeAuthCtx(),makeDbUser()fromsrc/__tests__/helpers/ctx.ts. Add to the helpers when new model fixtures are needed. - Mock external calls (
bcryptjs,openai,firebase-admin, etc.) withvi.mock. Never hit a real DB or external API in unit tests. - Run
npm testbefore marking any ticket[x].
Frontend
- Every new page gets a test in
src/__tests__/pages/<feature>/<Page>.test.tsx. - Every new custom hook with async or complex logic gets a test in
src/__tests__/hooks/<hook>.test.ts. - Use
vi.hoisted()for mock variables referenced insidevi.mockfactories (avoids hoisting errors). - Mock
gqlClient,useNavigate, and Zustand stores — never test with a real network call. - Run
pnpm --filter @castyou/app test runbefore marking any ticket[x].
What counts as sufficient coverage
- All happy paths
- All explicitly defined error paths (wrong password, duplicate email, invalid input, unauthenticated access, etc.)
- Any branching logic with more than one outcome (e.g. 2FA enabled vs disabled, union return types)
Epics
Each epic is now its own document. Listed in build order.
Epic 35 — Navigation Chrome UX Refresh (Bell, Theme, Responsive Nav)
Epic 37 — Automated Content Moderation (Illegal Content & Pornography)
Epic 40 — Account Tiers Restructure (Scout / Casting Director / Talent Free / Pro)
Epic 41 — CasTars Economy Re-pricing (bundles + bounty floor)
Epic 42 — Match Engine (Swipe-to-Match) — replaces Job Apply
Epic 46 — Beta Mode (Beta flag → Beta badge + "beta" UI marker)
Epic 49 — On-System Casting (Structured Auditions, Redesigned)