> ## Documentation Index
> Fetch the complete documentation index at: https://docs.dodopayments.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Next.js Minimal Boilerplate

> Starten Sie schnell mit unserem minimalen Next.js-Boilerplate zur Integration von Dodo Payments in Ihre Next.js-Anwendung.

## Übersicht

Das Next.js Minimal Boilerplate bietet einen sofort einsatzbereiten Ausgangspunkt für die Integration von Dodo Payments in Ihre Next.js-Anwendung. Diese Vorlage umfasst Checkout-Sitzungen, Webhook-Verarbeitung, Kundenportal und moderne UI-Komponenten, um Ihnen zu helfen, schnell Zahlungen zu akzeptieren.

<Info>
  Dieses Boilerplate verwendet Next.js 16 App Router mit TypeScript, Tailwind CSS 4 und dem `@dodopayments/nextjs`-Adapter.
</Info>

### Funktionen

* **Schnelle Einrichtung** – In weniger als 5 Minuten startklar
* **Zahlungsintegration** – Vorgefertigter Checkout-Flow mit `@dodopayments/nextjs`
* **Moderne Oberfläche** – Saubere, dunkel gehaltene Preisübersicht mit Tailwind CSS
* **Webhook-Handler** – Bereit nutzbarer Webhook-Endpunkt für Zahlungsereignisse
* **Kundenportal** – Ein-Klick-Verwaltung von Abonnements
* **TypeScript** – Vollständig typisiert mit minimalen, fokussierten Typen
* **Vorbefüllter Checkout** – Zeigt, wie Kundendaten zur Verbesserung der UX übergeben werden

## Voraussetzungen

Bevor Sie beginnen, stellen Sie sicher, dass Sie Folgendes haben:

* **Node.js 20.9+** (erforderlich für Next.js 16)
* **Dodo Payments-Konto** (um API- und Webhook-Keys vom Dashboard abzurufen)

## Schnellstart

<Steps>
  <Step title="Clone the Repository">
    ```bash theme={null}
    git clone https://github.com/dodopayments/dodo-nextjs-minimal-boilerplate.git
    cd dodo-nextjs-minimal-boilerplate
    ```
  </Step>

  <Step title="Install Dependencies">
    ```bash theme={null}
    npm install
    ```
  </Step>

  <Step title="Get API Credentials">
    Melde dich bei [Dodo Payments](https://dodopayments.com/) an und hole dir deine Zugangsdaten über das Dashboard:

    * **API-Schlüssel:** [Dashboard → Entwickler → API-Schlüssel](https://app.dodopayments.com/developer/api-keys)
    * **Webhook-Schlüssel:** [Dashboard → Entwickler → Webhooks](https://app.dodopayments.com/developer/webhooks)

    <Tip>
      Stelle sicher, dass du dich beim Entwickeln im **Testmodus** befindest!
    </Tip>
  </Step>

  <Step title="Configure Environment Variables">
    Erstelle eine `.env`-Datei im Stammverzeichnis:

    ```bash theme={null}
    cp .env.example .env
    ```

    Aktualisieren Sie die Werte mit Ihren Dodo Payments-Anmeldeinformationen:

    ```env theme={null}
    DODO_PAYMENTS_API_KEY=your_api_key_here
    DODO_PAYMENTS_WEBHOOK_KEY=your_webhook_signing_key_here
    DODO_PAYMENTS_RETURN_URL=http://localhost:3000
    DODO_PAYMENTS_ENVIRONMENT=test_mode
    ```

    <Warning>
      Committe deine `.env`-Datei niemals in die Versionskontrolle. Sie ist bereits in `.gitignore` enthalten.
    </Warning>
  </Step>

  <Step title="Add Your Products">
    Aktualisiere `src/lib/products.ts` mit deinen tatsächlichen Produkt-IDs von Dodo Payments:

    ```typescript theme={null}
    export const products: Product[] = [
      {
        product_id: "pdt_001", // Replace with your product ID
        name: "Basic Plan",
        description: "Get access to basic features and support",
        price: 9999, // in cents
        features: [
          "Access to basic features",
          "Email support",
          "1 Team member",
          "Basic analytics",
        ],
      },
      // ... add more products
    ];
    ```
  </Step>

  <Step title="Run the Development Server">
    ```bash theme={null}
    npm run dev
    ```

    Öffne [http://localhost:3000](http://localhost:3000), um deine Preisübersicht zu sehen!
  </Step>
</Steps>

## Projektstruktur

```text theme={null}
src/
├── app/
│   ├── api/
│   │   ├── checkout/          # Checkout session handler
│   │   ├── customer-portal/   # Customer portal redirect
│   │   └── webhook/           # Webhook event handler
│   ├── components/
│   │   ├── Footer.tsx         # Reusable footer
│   │   ├── Header.tsx         # Navigation header
│   │   └── ProductCard.tsx    # Product pricing card
│   ├── globals.css            # Global styles
│   ├── layout.tsx             # Root layout
│   └── page.tsx               # Pricing page (home)
└── lib/
    └── products.ts            # Product definitions
```

## Anpassung

### Produktinformationen aktualisieren

Bearbeite `src/lib/products.ts`, um zu ändern:

* Produkt-IDs (aus deinem Dodo-Dashboard)
* Preise
* Funktionen
* Beschreibungen

### Kundendaten vorab ausfüllen

Ersetze in `src/app/components/ProductCard.tsx` die hartcodierten Werte durch deine tatsächlichen Benutzerdaten:

```typescript theme={null}
customer: {
  name: "John Doe",
  email: "john@example.com",
},
```

### Kundenportal aktualisieren

Ersetze in `src/app/components/Header.tsx` die hartcodierte Kunden-ID:

```typescript theme={null}
const CUSTOMER_ID = "cus_001"; // Replace with actual customer ID
```

Sie können einen Testkauf abschließen, um die Kunden-ID für Tests zu erhalten.

## Webhook-Ereignisse

Das Boilerplate demonstriert die Behandlung von zwei Webhook-Ereignissen in `src/app/api/webhook/route.ts`:

* `onSubscriptionActive` – Wird ausgelöst, wenn ein Abonnement aktiv wird
* `onPaymentSucceeded` – Wird ausgelöst, wenn eine Zahlung erfolgreich ist

Fügen Sie Ihre Geschäftslogik in diese Handler ein:

```typescript theme={null}
onSubscriptionActive: async (payload) => {
  // Grant access to your product
  // Update user database
  // Send welcome email
},
```

Fügen Sie bei Bedarf weitere Webhook-Ereignisse hinzu.

Für die lokale Entwicklung können Sie Tools wie [ngrok](https://ngrok.com/) verwenden, um einen sicheren Tunnel zu Ihrem lokalen Server zu erstellen und ihn als Ihre Webhook-URL zu verwenden.

## Bereitstellung

### Für die Produktion bauen

```bash theme={null}
npm run build
npm start
```

### Auf Vercel bereitstellen

\[

![Mit Vercel bereitstellen](https://vercel.com/button)

]\([https://vercel.com/new/clone?repository-url=https://github.com/dodopayments/dodo-nextjs-minimal-boilerplate](https://vercel.com/new/clone?repository-url=https://github.com/dodopayments/dodo-nextjs-minimal-boilerplate))

Vergessen Sie nicht, Ihre Umgebungsvariablen im Vercel-Dashboard hinzuzufügen!

### Webhook-URL aktualisieren

Nach der Bereitstellung aktualisieren Sie Ihre Webhook-URL im [Dodo Payments Dashboard](https://app.dodopayments.com/developer/webhooks):

```
https://example.com/api/webhook
```

## Fehlersuche

<AccordionGroup>
  <Accordion title="Module not found or build errors">
    Lösche `node_modules` und installiere die Abhängigkeiten neu:

    ```bash theme={null}
    rm -rf node_modules package-lock.json
    npm install
    ```
  </Accordion>

  <Accordion title="Checkout redirect fails">
    **Häufige Ursachen:**

    * Ungültige Produkt-ID – überprüfe, ob sie in deinem Dodo-Dashboard existiert
    * Falscher API-Schlüssel oder Umgebungseinstellung in `.env`
    * Prüfe Browser-Konsole und Terminal auf Fehler
  </Accordion>

  <Accordion title="Webhooks not receiving events">
    Für lokale Tests nutze [ngrok](https://ngrok.com), um deinen Server freizugeben:

    ```bash theme={null}
    ngrok http 3000
    ```

    Aktualisiere die Webhook-URL in deinem [Dodo-Dashboard](https://app.dodopayments.com/developer/webhooks) auf die ngrok-URL. Denk daran, deine .env-Datei mit dem korrekten Webhook-Verifizierungsschlüssel zu aktualisieren.
  </Accordion>

  <Accordion title="Customer portal link doesn't work">
    Ersetze die hartcodierte `CUSTOMER_ID` in `src/app/components/Header.tsx` durch eine tatsächliche Kunden-ID aus deinem Dodo-Dashboard.

    Oder integriere dein Authentifizierungssystem und deine Datenbank, um die Kunden-ID dynamisch abzurufen.
  </Accordion>
</AccordionGroup>

## Erfahren Sie mehr

* [Dodo-Zahlungen Dokumentation](https://docs.dodopayments.com/)
* [Checkout-Sitzungen Dokumentation](https://docs.dodopayments.com/developer-resources/checkout-session)
* [Webhooks Dokumentation](https://docs.dodopayments.com/developer-resources/webhooks)

## Unterstützung

Brauchen Sie Hilfe mit dem Boilerplate?

* Treten Sie unserer [Discord-Community](https://discord.gg/bYqAp4ayYh) für Fragen und Diskussionen bei
* Überprüfen Sie das [GitHub-Repository](https://github.com/dodopayments/dodo-nextjs-minimal-boilerplate) auf Probleme und Updates
* Kontaktieren Sie unser [Support-Team](mailto:support@dodopayments.com) für Unterstützung
