# WebDev Pipeline Interner Akquise-Agent fuer lokale Webdesign-Leads. Das MVP startet mit Next.js App Router, TypeScript, Tailwind CSS, shadcn/ui und Platzhalter-Routen fuer Dashboard, Login und oeffentliche Audit-Seiten. ## Getting Started ```bash pnpm dev ``` Open [http://localhost:3000](http://localhost:3000) with your browser to see the result. ## Scripts - `pnpm dev` starts the local development server. - `pnpm lint` runs ESLint. - `pnpm build` creates a production build. - `pnpm start` starts the production server after a build. ## Environment Variables Copy `.env.example` to `.env.local` for local development. Keep real secrets out of the repository and configure production values in Coolify and provider dashboards. - **App / Coolify:** `APP_ENV`, `NEXT_PUBLIC_APP_URL` - **Convex:** `NEXT_PUBLIC_CONVEX_URL`, `NEXT_PUBLIC_CONVEX_SITE_URL`, `CONVEX_DEPLOYMENT` - **Google:** `GOOGLE_GEOCODING_API_KEY`, `GOOGLE_PLACES_API_KEY`, `PAGESPEED_API_KEY` - **OpenRouter:** `OPENROUTER_API_KEY` - **SMTP / Stalwart:** `SMTP_HOST`, `SMTP_PORT`, `SMTP_USER`, `SMTP_PASSWORD`, `SMTP_FROM` - **Rybbit:** `RYBBIT_API_URL`, `RYBBIT_API_KEY`, `NEXT_PUBLIC_RYBBIT_SITE_ID` - **Auth:** `BETTER_AUTH_SECRET` - **TASK-8 enrichment:** `TASK8_BROWSER_ASSET_URL` Only variables prefixed with `NEXT_PUBLIC_` are intended for browser exposure. All API keys, SMTP credentials, and server-only URLs must stay server-side. ### Admin Auth Flow - `/login` handles Anmeldung mit dem bestehenden Admin-Account. Registrierung ist nach der Ersteinrichtung serverseitig deaktiviert. - Nach erfolgreicher Anmeldung wird auf `/dashboard` gewechselt. - Die Session wird im Layout/Middleware geprüft (`/dashboard` bleibt geschützt), öffentliche Audit-Routen bleiben weiterhin frei. - Für Passwortänderungen ist aktuell kein separater Endpunkt in der UI, daher für MVP bitte über administrativen Wartungsweg vorgehen. ## Routes - `/` MVP entry page. - `/dashboard` internal dashboard placeholder. - `/login` admin login placeholder. - `/audit/[slug]` public audit placeholder. ## Deployment Notes Coolify should run `pnpm install`, `pnpm build`, and `pnpm start`. The current font setup uses `next/font/google`, so production builds need outbound access to Google Fonts unless fonts are later self-hosted. TASK-8 enrichment uses `playwright-core` with `@sparticuz/chromium-min` in Convex. Local `npx playwright install` is a browser-testing helper only and does not affect the Convex runtime bundle. TASK-8 requires a browser binary source URL configured on Convex. The preferred variable is: - `TASK8_BROWSER_ASSET_URL` (for example your self-hosted or CDN Chromium bundle URL if you do not rely on package defaults). For backward compatibility, the action also supports: - `TASK8_CHROMIUM_EXECUTABLE_URL` - `TASK8_CHROMIUM_EXECUTABLE` If none are set, enrichment deployment/startup will fail with a clear configuration error so no silent fallback is used. If the URL is missing and no default is available in your environment, the enqueue action will throw a clear deploy/configuration error so enrichment does not silently fall back to a missing binary. For TASK-8 deployment updates, run Convex restart/deploy after code changes: - Local: `pnpm exec convex dev` - Remote: `pnpm exec convex deploy`