# User Dashboard (LysnrAI) — Vercel Deployment Roadmap > **App:** `user-dashboard-web` > **Repo:** `learning_voice_ai_agent` → `user-dashboard-web/` > **Status:** ⚠️ Partial — needs Gitea registry access + env vars --- ## Current State - **Framework:** Next.js 16.1.6, React 19.2.3, TailwindCSS v4, shadcn/ui - **Output:** Vercel-aware (`process.env.VERCEL ? {} : { output: 'standalone' }`) - **Dependencies:** 14 `@bytelyst/*` packages via Gitea registry (`^0.1.0`) - **Build:** `next build --webpack` - **Server-side:** Azure Cosmos DB, Stripe, JWT, bcryptjs - **No `file:` references** ✅ ## Gaps to Fix ### Gap 1: Gitea Registry Access on Vercel (~15 min) The `.npmrc` points to local Gitea (`http://localhost:3300`). Vercel can't reach this. **Options:** - **A) Publish to npm (public)** — best for production - **B) Publish to GitHub Packages (private)** — requires `NODE_AUTH_TOKEN` on Vercel - **C) Use Vercel's private npm support** — configure in project settings - **D) Vendor tarballs** — use `scripts/docker-prep.sh` pattern to pack tarballs and reference locally **Recommended:** Option B or C for initial deployment. **Fix:** - [ ] Publish `@bytelyst/*` packages to GitHub Packages or npm - [ ] Update `.npmrc` to use the chosen registry (with Vercel env var for auth token) - [ ] OR use `docker-prep.sh` to vendor tarballs and adjust `package.json` ### Gap 2: Environment Variables (~10 min) - [ ] `COSMOS_ENDPOINT` — Azure Cosmos DB endpoint - [ ] `COSMOS_KEY` — Azure Cosmos DB key - [ ] `JWT_SECRET` — JWT signing secret - [ ] `STRIPE_SECRET_KEY` — Stripe server-side key - [ ] `STRIPE_PUBLISHABLE_KEY` — Stripe public key - [ ] `NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY` — Client-side Stripe key - [ ] `PLATFORM_SERVICE_URL` — platform-service endpoint - [ ] `ACTIONTRAIL_SERVICE_URL` — ActionTrail backend - [ ] `AZURE_KEYVAULT_URL` — AKV (optional) ## Deployment Steps ### Step 1: Fix Registry Access (~15 min) - [ ] Choose registry strategy (npm / GitHub Packages / Vercel private) - [ ] Publish packages or configure vendoring - [ ] Update `.npmrc` with Vercel-compatible registry URL ### Step 2: Create Vercel Project (~5 min) - [ ] Connect `learning_voice_ai_agent` repo - [ ] Set **Root Directory** to `user-dashboard-web` - [ ] Framework preset: **Next.js** ### Step 3: Configure Environment Variables (~10 min) - [ ] Add all env vars listed above - [ ] Set `NODE_AUTH_TOKEN` if using private registry ### Step 4: Verify (~10 min) - [ ] Trigger deploy - [ ] Test login, dashboard, billing flow - [ ] Verify Stripe integration - [ ] Verify Cosmos connectivity ### Step 5: Domain (~5 min) - [ ] Add custom domain (e.g., `portal.lysnrai.com`) ## Risks - **Cosmos latency:** Same region concern as admin-web. - **Stripe webhooks:** Stripe webhook URL must be updated to Vercel domain. - **Platform-service connectivity:** PLATFORM_SERVICE_URL must point to a publicly accessible endpoint (not localhost). ## Estimated Total Effort: ~45 minutes