Decksmith โ Product Roadmap โ
Status: โ Done ยท ๐ In progress ยท โฌ Not started
Phase 0: Infrastructure โ
- โ Monorepo scaffold (pnpm + Turborepo)
- โ CI pipeline (GitHub Actions โ format, lint, typecheck, test)
- โ TypeScript strict mode
- โ Oxlint + Oxfmt (ADR-0013)
- โ
Shared configs in
packages/config(tsconfig, vitest) - โ
Prisma schema (16 models) in
packages/db - โ
Zod schemas (all domains) in
packages/schema - โ
Fastify server + Zod type provider in
apps/api - โ
User CRUD routes (
/api/v1/users) - โ Database seed script with faker.js
- โ 14 ADRs + 10 feature specs
- โ Vitest infrastructure (shared config + sample test)
- โ
.env.example
Phase 1: Documentation & Context System โ
- โ
Create
apps/docs/roadmap.md(this file) - โ
Create
apps/docs/context/project-state.md - โ
Create
apps/docs/context/decisions-log.md - โ
Update
CLAUDE.mdwith @import + learning contract + maintenance policy - โ
Create
apps/docs/skills-and-agents.md - โ
Create
.claude/WORKFLOW.md - โ
Create 5 skills:
session.start,session.end,roadmap.update,module.scaffold,spec.sync - โ
Create 9 subagents:
api-reviewer,db-reviewer,domain-reviewer,frontend-reviewer,ui-reviewer,a11y-reviewer,test-writer,devops-reviewer,cto-advisor - โ Configure GitHub MCP
Phase 2: Foundation โ
2.1 Environment & DB Connection โ
- โ Verify Supabase project + connection string
- โ
Run
db:pushto sync Prisma schema to Supabase - โ Run seed script against live DB
2.2 Auth (spec: user-auth.md) โ
- โฌ Enable Supabase Auth + OAuth providers (Google, GitHub)
- โ
Auth plugin in
apps/api(JWT verification middleware) - โ Auth routes: register, login, logout, refresh, forgot-password, reset-password
- โ
Zod schemas for auth DTOs in
packages/schema/src/auth/ - โฌ RLS policies for user-owned tables
- โ
Auto-create
UserPreferenceson signup (nested Prisma write in register route)
2.3 Rate Limiting & CORS โ
- โ
@fastify/rate-limitwith strict limits on auth endpoints - โ
@fastify/corsconfigured for dev + prod origins
Phase 3: Scryfall Integration (spec: card-search.md) โ
3.1 packages/scryfall โ
- โฌ Bulk data download client
- โฌ Card normalization (Scryfall โ
Card+CardPrintPrisma models) - โฌ In-memory caching layer
- โฌ Zod schemas for Scryfall API responses
- โฌ Unit tests for normalization logic
3.2 Initial Data Sync (apps/worker) โ
- โฌ BullMQ + Redis setup in
apps/worker - โฌ
scryfall-syncjob + daily cron schedule - โฌ Incremental update handling
3.3 Card API โ
- โฌ
GET /api/v1/cards/search(full-text + filters: color, CMC, rarity, format) - โฌ
GET /api/v1/cards/:id(card detail + prints) - โฌ Autocomplete endpoint (< 200ms)
Phase 4: Web Frontend Foundation โ
4.1 apps/web Setup โ
- โฌ Vite + React initialized
- โฌ TanStack Router + TanStack Query
- โฌ Tailwind + shadcn/ui
- โฌ Base routes:
/,/login,/register,/dashboard
4.2 packages/api-client โ
- โฌ Typed fetch client wrapping all API endpoints
- โฌ Error handling with typed error codes from
packages/schema
4.3 packages/query โ
- โฌ TanStack Query hooks:
useUser,useUserPreferences,useCardSearch
4.4 Auth UI โ
- โฌ Login + Register pages
- โฌ Email confirmation + password reset flow
- โฌ Auth guard for protected routes
4.5 packages/web-ui Foundation โ
- โฌ shadcn/ui base components: Button, Input, Form, Card, Badge, Dialog, Toast
- โฌ Design tokens from
packages/tokensapplied
Phase 5: Internationalisation (i18n) โ
Dependency: Phase 4.1 (apps/web initialized)
- โฌ ADR: i18n strategy โ Zod error codes vs hardcoded messages
- โฌ Replace hardcoded English strings in
packages/schemaZod validators with error codes - โฌ i18n library in
apps/web(e.g.react-i18next) with locale files (EN + FR baseline) - โฌ
Accept-Languageheader support inapps/api(locale-aware error messages) - โฌ i18n in
apps/mobile(Expo Localization)
Phase 6: Collection Management (spec: collection.md) โ
6.1 Collection API โ
- โฌ CRUD for collection entries + folders
- โฌ Domain logic in
packages/domain - โฌ Tags CRUD + attach/detach
6.2 Collection UI โ
- โฌ Inventory page (grid/table/list views)
- โฌ Add card flow (search โ print โ quantity/condition)
- โฌ Saved views, folder nav, tag UI
Phase 7: Deck Management (spec: deck-management.md) โ
7.1 Deck API โ
- โฌ CRUD for decks + sections + cards
- โฌ Format validation (singleton, color identity, banlists)
- โฌ Collection coverage calculation
- โฌ Deck statistics (mana curve, colors, avg CMC)
- โฌ Public deck sharing
7.2 Deck UI โ
- โฌ Deck list + creation flow
- โฌ Deck builder (sections sidebar + card grid)
- โฌ Format validation feedback, coverage indicator, stats panel
- โฌ Public share page
/decks/:id(no auth)
Phase 8: Pricing (spec: pricing.md) โ
- โฌ Extend Scryfall sync for prices (TCGplayer USD + Cardmarket EUR)
- โฌ
GET /api/v1/collection/valuation - โฌ
GET /api/v1/decks/:id/cost - โฌ Pricing UI in collection view + deck builder
Phase 9: PDF Generation (spec: pdf-generation.md) โ
9.1 packages/pdf โ
- โฌ Deterministic PDF layout engine
- โฌ Paper formats, grid config, margins, cut lines, DPI, double-sided
- โฌ Unit tests for layout math
9.2 Worker Infrastructure โ
- โฌ Redis (Docker for dev, Upstash for production)
- โฌ BullMQ PDF job
9.3 PDF API + UI โ
- โฌ
POST /api/v1/pdf(enqueue) + GET status + GET download - โฌ Preview panel, config form, job status polling
Phase 10: 3D Card Viewer (spec: card-details.md) โ
- โฌ Three.js card component in
packages/web-ui - โฌ Rotation, zoom, animated foil shader
- โฌ Fallback for low-end devices
Phase 11: Craft Guide (spec: craft-guide.md) โ
- โฌ
CraftGuideArticleseed data - โฌ
GET /api/v1/craft-guide(list + single) - โฌ Article list + reader UI
Phase 12: Recommendations โ
- โฌ Recommendation engine in
packages/domain - โฌ API routes + feedback endpoints
- โฌ Recommendations panel in deck builder
Phase 13: Documentation Site โ
- โ
apps/docs/with VitePress (docs live here directly) - โ
GitHub Pages deployment via
.github/workflows/docs.yml
Phase 14: Mobile App (apps/mobile) โ
Dependencies: Phase 6 + 7 stable on web
14.1 Setup โ
- โฌ Initialize Expo + React Native in
apps/mobile - โฌ Configure
packages/native-ui(React Native components) - โฌ Auth: Supabase Auth for React Native (
expo-auth-session) - โฌ Navigation: Expo Router
- โฌ Shared:
packages/api-client,packages/schema,packages/domain(reused as-is)
14.2 Core Features โ
- โฌ Auth flow (login, register, session)
- โฌ Card search (camera barcode scan โ card lookup)
- โฌ Collection management (add/view/edit entries)
- โฌ Deck list + view (read-only, edit later)
- โฌ PDF generation trigger + download
14.3 Mobile-Specific โ
- โฌ Push notifications (Expo Notifications) for price alerts, PDF ready
- โฌ Offline mode for collection browsing
- โฌ Camera integration for card scanning
Evergreen โ
- โฌ Write unit tests as each module is implemented
- โฌ Update ROADMAP per session (
/roadmap.update) - โฌ Update
apps/docs/context/project-state.mdper session (/session.end) - โฌ Check dependency updates at session start (
/session.start) - โฌ Create ADRs for new architectural decisions