Skip to content

Spec: mirror apps/web as Vue SPA (apps/web-vue) #39

Description

@xirothedev

Goal

apps/web-vue: a Vue 3 + Vite SPA mirror of apps/web (Next 16). All 42 routes, same NestJS API (VITE_API_URL → :4000/v1), cookie+CSRF auth as-is. Next app stays untouched and authoritative. See apps/web-vue/CONTEXT.md for Mirror/Mirror page glossary.

Decisions (grilled, settled)

  • No SSR/Nuxt — apps/web uses zero server features; SPA with useHead for meta. SEO parity out of scope until demanded.
  • shadcn-vue (reka-ui) port of src/components/ui; Tailwind v4 globals.css tokens copied verbatim; @tailwindcss/vite.
  • Library map: react-query→@tanstack/vue-query; react-hook-form→vee-validate+@vee-validate/zod (zod v4 schemas reused); lucide-react→lucide-vue-next; tiptap→@tiptap/vue-3; react-big-calendar→FullCalendar (restyled; ~90% visual parity accepted); magicui animated-beam/number-ticker→motion-v; react-markdown/MDX→marked; next/image→plain <img>; axios api-client + csrf + api modules copied verbatim (framework-agnostic).
  • git-utils dates dropped — API timestamps instead; no build-time git plugin.
  • Turbo scripts only — no docker/nginx/CI wiring until deploy.
  • Stub-first: the shell ticket registers ALL 42 routes with stub .vue pages so page tickets never touch shared files (router/package.json) → conflict-free parallel merges.

Ticket graph

T1 scaffold → T2 ui-port → T3 shell+router-stubs → parallel: T4 marketing+legal, T5 shop+cart+checkout, T6 auth, T8 blog, T9 calendar; then T7 orders+account (after T6), T10 admin (after T6); then T11 payments (after T7).

Done when

bun run build green in apps/web-vue, all 42 routes render with mirrored structure/behavior against the api, PR single-branch merged.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions