# BreakPilot Website Marketing- und Pricing-Website fuer BreakPilot mit Stripe Checkout Integration. ## Tech Stack - **Framework:** Next.js 15.1.6 - **Styling:** Tailwind CSS 3.4 - **Language:** TypeScript 5.7 - **Payment:** Stripe Checkout (via Billing Service) ## Lokale Entwicklung ### Voraussetzungen - Node.js 20+ - npm oder yarn ### Installation ```bash cd website npm install npm run dev ``` Website ist dann unter http://localhost:3000 erreichbar. ## Docker ### Build ```bash docker build -t breakpilot-website \ --build-arg NEXT_PUBLIC_BILLING_API_URL=http://localhost:8083 \ --build-arg NEXT_PUBLIC_APP_URL=http://localhost:8000 \ . ``` ### Run ```bash docker run -p 3000:3000 breakpilot-website ``` ### Mit Docker Compose ```bash # Aus dem Root-Verzeichnis docker compose up -d website ``` ## Umgebungsvariablen | Variable | Beschreibung | Default | |----------|--------------|---------| | `NEXT_PUBLIC_BILLING_API_URL` | URL zum Billing Service | `http://localhost:8083` | | `NEXT_PUBLIC_APP_URL` | URL zur BreakPilot App | `http://localhost:8000` | | `NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY` | Stripe Public Key | - | ### Build-Zeit vs. Runtime NEXT_PUBLIC_* Variablen werden zur Build-Zeit eingebettet. Fuer Docker: ```bash docker build \ --build-arg NEXT_PUBLIC_BILLING_API_URL=https://api.breakpilot.de \ --build-arg NEXT_PUBLIC_APP_URL=https://app.breakpilot.de \ --build-arg NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY=pk_live_xxx \ . ``` ## Stripe Integration ### Flow 1. Nutzer waehlt Plan auf der Pricing-Seite 2. Nutzer gibt E-Mail ein 3. Website ruft `POST /api/v1/billing/trial/start` am Billing Service auf 4. Billing Service erstellt Stripe Checkout Session 5. Nutzer wird zu Stripe Checkout weitergeleitet 6. Nach Zahlung: Redirect zu `/success?session_id=xxx` 7. Success-Seite zeigt Bestaetigung und leitet zur App weiter ### API Endpunkt ``` POST /api/v1/billing/trial/start Content-Type: application/json { "plan_id": "basic" | "standard" | "premium", "email": "user@example.com" } Response: { "checkout_url": "https://checkout.stripe.com/..." } ``` ## Seiten | Route | Beschreibung | |-------|--------------| | `/` | Landing Page mit Hero, Pricing, Trust-Sektion | | `/success` | Erfolgsseite nach Stripe Checkout | | `/cancel` | Abbruchseite wenn Checkout abgebrochen | ## Produktion ### Empfohlene Konfiguration ```env NEXT_PUBLIC_BILLING_API_URL=https://api.breakpilot.de NEXT_PUBLIC_APP_URL=https://app.breakpilot.de NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY=pk_live_xxx ``` ### SSL/TLS Fuer Produktion sollte ein Reverse Proxy (nginx, Traefik) mit SSL verwendet werden. ## Projektstruktur ``` website/ ├── app/ │ ├── globals.css # Tailwind + Custom Styles │ ├── layout.tsx # Root Layout │ ├── page.tsx # Landing Page │ ├── success/ │ │ └── page.tsx # Checkout Erfolgsseite │ └── cancel/ │ └── page.tsx # Checkout Abbruchseite ├── components/ │ ├── Header.tsx # Navigation │ ├── PricingSection.tsx # Pricing Cards + Modal │ └── Footer.tsx # Footer ├── Dockerfile # Multi-stage Docker Build ├── next.config.mjs # Next.js Konfiguration ├── tailwind.config.ts # Tailwind mit BreakPilot Farben └── package.json ```