Suche

Kavel durchsuchen...

Dokumentationsmenü

Konfiguration

Zwei Dinge zum Konfigurieren: die Secrets für die genutzten Dienste und deine Markendaten. Diese Seite ist die vollständige Referenz für beides.

Wo die Konfiguration liegt

Lokale Secrets liegen in apps/api/.dev.vars (gitignored). Der Scaffolder erstellt sie aus .dev.vars.example, die jede Variable auflistet, die die gewählten Module nutzen können, sodass du nur die für deine App relevanten Variablen siehst. Markendaten liegen separat in packages/ui/src/config.ts.

Hinweis

Module verhalten sich kulant. Ohne RESEND_API_KEY loggt das E-Mail-Modul und überspringt den Versand; ohne Stripe-Schlüssel bleiben die Checkout-Endpunkte inaktiv. Du kannst bauen und herumklicken, bevor du auch nur einen externen Dienst anbindest.

Kernvariablen

Diese gibt es in jeder Kavel-App, egal welche Module du wählst.

  • `ENVIRONMENT` Der Laufzeitmodus, development oder production. Lokal ist er development; bereitgestellte Workers setzen production, was die interaktive /rpc/docs-API-Referenz deaktiviert.
  • `WEB_URL` Die öffentliche URL der Web-App, http://localhost:3000 in der Entwicklung. Genutzt für CORS und zum Aufbau von Links in E-Mails und Auth-Callbacks.
  • `API_URL` Die öffentliche URL des API-Workers, http://localhost:8787 in der Entwicklung. Die Web-App liest sie, um das Backend zu erreichen.

Modulvariablen

Jedes Modul fügt nur seine eigenen Variablen zu .dev.vars.example hinzu. Trage die für die aktivierten Module ein.

Auth

  • `BETTER_AUTH_SECRET` Erforderlich. Signiert Sitzungen und Tokens. Erzeuge eines mit openssl rand -base64 32.
  • `GITHUB_CLIENT_ID` und `GITHUB_CLIENT_SECRET` Optional. Aktivieren GitHub-Social-Login, erstellt in den Einstellungen deiner GitHub-OAuth-App.
  • `GOOGLE_CLIENT_ID` und `GOOGLE_CLIENT_SECRET` Optional. Aktivieren Google-Social-Login, aus der Google-Cloud-Konsole.

Lass die OAuth-Paare leer, um diese Anbieter aus zu lassen. Die Anmeldung mit E-Mail und Passwort funktioniert ohne sie.

E-Mail

  • `RESEND_API_KEY` Zum Senden erforderlich. Dein Resend-API-Schlüssel. Ohne ihn loggt das Modul die E-Mail und überspringt die Zustellung.
  • `EMAIL_FROM` Die Absenderadresse, zum Beispiel My App <noreply@myapp.com>. Die Domain muss in Resend verifiziert sein.
  • `CONTACT_TO` Wohin die Einsendungen des Kontaktformulars zugestellt werden.

Zahlungen

  • `STRIPE_SECRET_KEY` Erforderlich. Dein geheimer Stripe-Schlüssel aus dem Stripe-Dashboard.
  • `STRIPE_WEBHOOK_SECRET` Erforderlich. Verifiziert eingehende Stripe-Webhooks, angezeigt beim Registrieren deines Webhook-Endpunkts.
  • `STRIPE_PRICE_ID` Der Preis, den der Checkout berechnet.

Lokal vs. Produktion

.dev.vars ist nur für die lokale Entwicklung und wird nie committet. In der Produktion teilen sich dieselben Namen in zwei Arten:

  • Secrets, die sensiblen Werte (API-Schlüssel, BETTER_AUTH_SECRET, Stripe-Schlüssel), setzt du mit wrangler secret put NAME oder im Cloudflare-Dashboard. Sie landen nie im Repo.
  • Einfache Vars, die nicht sensiblen (ENVIRONMENT, WEB_URL), liegen in wrangler.jsonc unter vars.
bash
wrangler secret put BETTER_AUTH_SECRET
wrangler secret put RESEND_API_KEY

Warnung

.dev.vars ist nur für die lokale Entwicklung. Setze Secrets in der Produktion mit wrangler secret put NAME auf dem Worker, committe sie nie. Siehe Deployment.

Markenkonfiguration

Name, Tagline, Kontaktdaten und Social-Links liegen in einem typisierten Objekt in packages/ui/src/config.ts. Marketing-Seiten, der Footer und E-Mail-Vorlagen lesen daraus, deine Marke zu aktualisieren ist also eine einzige Änderung:

ts
export const Config = {
  brand: {
    name: "My App",
    tagline: "Ship faster on the edge",
    domain: "myapp.com",
    email: "hello@myapp.com",
    socialMedia: [
      { id: "github", name: "GitHub", url: "https://github.com/my-app" },
    ],
  },
};

Typen neu generieren

Nach dem Ändern von Worker-Bindings in wrangler.jsonc generierst du die Cloudflare-Typen neu, damit die API typsicher bleibt:

bash
bun cf-typegen