Files
csgowtf/TODO.md

7.8 KiB
Raw Blame History

CS2.WTF Rewrite TODO

Phase 0 Kickoff & Research

  • Create and push the cs2-port branch from the current default branch.
  • Capture the legacy stack (Vue 3 SPA + Go backend) and existing route map (/, /matches, /player/[id], /match/[id]/{economy|details|flashes|damage|chat}) for reference.
  • Host workshops with stakeholders, shoutcasters, and data consumers to gather CS2-specific requirements (new stats, volumetric smokes, MR12 changes).
  • Audit the csgowtfd backend APIs and data models; decide whether to extend or replace services for CS2 telemetry.
  • Document CS2 demo parsing pipeline expectations, storage strategy, and data freshness SLAs.

Phase 1 Technical Foundations

  • Standardize on Node.js ≥ 18 (add .nvmrc / .tool-versions) and npm or yarn (lock the choice in documentation).
  • Scaffold a new SvelteKit project with TypeScript in strict mode and commit the baseline to cs2-port.
  • Integrate Tailwind CSS with DaisyUI; configure theme tokens, base styles, and dark/light mode support.
  • Add project tooling: ESLint (with Svelte + TypeScript rules), Prettier, svelte-check, Stylelint (for Tailwind), and git hooks via Husky + lint-staged.
  • Configure Vitest for unit/component tests and Playwright for E2E smoke tests (headless + CI modes).
  • Set up Vite aliases, environment variable handling, and TypeScript path mappings for domain-driven organization.
  • Update Woodpecker (or preferred CI) pipelines to run install, lint, type-check, test, and build jobs on every push.

Phase 2 Design System & UX Direction

  • Produce a Figma (or Penpot) design system: typography scale, spacing, color ramps, iconography inspired by modern Counter-Strike 2 visuals.
  • Define DaisyUI themes aligned with CS2 branding, including semantic color tokens for teams, utility types, and economy states.
  • Establish responsive layout grids (mobile-first up to ultrawide) and interaction patterns (hover, focus, press states).
  • Design core components: global navigation, search, tabs, data tables, filters, cards, charts, modals, toasts, and timeline elements.
  • Create motion guidelines (micro-interactions, transitions) that reinforce hierarchy without compromising performance.
  • Run accessibility review on mockups (contrast, color blindness variants, keyboard flows).

Phase 3 Domain Modeling & Data Layer

  • Define TypeScript interfaces and Zod schemas for CS2 entities: matches, rounds, players, utility events, economy states, chat logs, and metadata.
  • Decide on data access strategy (REST, GraphQL, WebSocket) and outline API contracts with backend engineers.
  • Build a typed API client module with error boundaries, retry/backoff, caching, and cancellation support.
  • Prepare mocked fixtures and MSW handlers for offline development and automated tests.
  • Explore real-time update requirements (live match polling or push) and capture API changes needed on the backend.

Phase 4 Application Architecture & Routing

  • Plan a route hierarchy using SvelteKit layouts (src/routes/+layout.svelte, routes/matches/+page.svelte, nested routes/match/[id]/+page.svelte, etc.).
  • Implement the global shell: header, footer, persistent search, language switcher, theme toggle, and notification area.
  • Configure load functions, universal load guards, and error/skeleton states per route for resilient UX.
  • Introduce cross-route state management (Svelte stores) for filters, user preferences, and shared data caches.
  • Establish analytics and consent handling architecture compatible with SSR.

Phase 5 Feature Delivery (Parity + Enhancements)

  • Home/Dashboard: featured matches, live queue, top performers, and quick filters with real-time indicators.
  • Matches Index: searchable, filterable list with virtualized tables, map/side filters, rank tiers, and date range pickers.
  • Player Profile (/player/[id]): career summary, map win rates, weapon performance, clutch stats, and timeline cards.
  • Match Overview (/match/[id]): scoreboard, round-by-round timeline, win probability graph, and MR12 adjustments.
  • Economy View: spend/equipment charts, save rounds, utility purchases, and loss-bonus visualization.
  • Utility/Flashes View: breakdown of utility effectiveness, pop flash timings, volumetric smoke coverage (heatmap/webgl overlays).
  • Damage View: per-round damage charts, headshot percentages, spatial heatmaps using Canvas/WebGL.
  • Chat View: chronological chat feed with role badges, highlight detection, and translation toggle.
  • Introduce CS2-exclusive insights (sky smoke bloom, loadout value changes, new grenade types) and align labels accordingly.
  • Add sharing/export features (downloadable stats, social cards) respecting privacy constraints.

Phase 6 Localization & Personalization

  • Integrate sveltekit-i18n (or equivalent) for multi-language support, starting with English plus priority locales.
  • Externalize all copy into translation files, including validation messages and chart labels.
  • Persist language preference (cookie/localStorage) and sync with SSR.
  • Localize formatting (dates, currency, ranks) using Intl APIs and server-aware utilities.
  • Provide user preference storage for theme, metric units, and favorite players/teams.

Phase 7 Performance, Accessibility & Observability

  • Define and enforce performance budgets (LCP ≤ 2.5s, CLS ≤ 0.1, TTI ≤ 4s) with automated Lighthouse checks.
  • Optimize assets: code splitting, prefetching strategies, image/CDN pipeline, and font loading.
  • Implement progressive enhancement for charts/tables and graceful degradation when JS is disabled.
  • Add runtime error monitoring (e.g., Sentry), structured logging, and privacy-aware analytics.
  • Conduct comprehensive accessibility audits with axe, manual keyboard testing, and screen reader passes.

Phase 8 Testing & Quality Assurance

  • Write unit tests for components, stores, and utilities (Vitest + Testing Library).
  • Develop integration/E2E scenarios (Playwright) covering match search, player view, and match detail tabs.
  • Set up visual regression snapshots for critical pages via Playwright or Loki.
  • Build load-testing scripts for APIs powering live dashboards (k6 or artillery).
  • Coordinate QA playbook: test matrices, release checklists, and bug triage workflow.

Phase 9 Deployment & Release Strategy

  • Choose hosting strategy (Node SSR on Fly.io/Vercel/Render or self-hosted) and provision staging/production environments.
  • Configure CI/CD deployment pipelines with environment promotion gates and feature flag toggles.
  • Establish secrets management (e.g., Doppler, Vault, SSM) for API keys and telemetry tokens.
  • Plan data migration/backfill from CS:GO to CS2, including schema evolution and archive policies.
  • Organize beta program, feedback channels, and phased rollout (legacy vs CS2 opt-in).

Phase 10 Documentation & Handover

  • Update README.md with setup, development, testing, and deployment instructions for CS2.WTF.
  • Create architecture decision records (ADRs) for key choices (SvelteKit adoption, data strategy, hosting).
  • Document API contracts, rate limits, and error semantics in an accessible format (OpenAPI + human-readable docs).
  • Prepare contributor guidelines, coding standards, and project board workflow.
  • Schedule knowledge transfer sessions and record walkthrough videos for onboarding.

Stretch Goals

  • Add authenticated user features: saved searches, match alerts, personalized dashboards.
  • Offer real-time live match viewer with timeline scrubbing and auto-updating stats.
  • Deliver PWA enhancements (offline read-only cache, push notifications when favorites go live).
  • Explore integrations with tournament APIs (Valve, HLTV, FACEIT) to enrich match context.