Configuration
Every setting in src/config.ts, the one file that names and prices your product.
siteConfig
export const siteConfig = {
name: 'Acme',
tagline: 'Get paid on time, without chasing',
description: 'Acme sends your invoices, follows up when they\'re late…',
url: process.env.NEXT_PUBLIC_APP_URL ?? 'http://localhost:3000',
supportEmail: 'support@acme.com',
checkoutConsent: null,
};| Field | Used for |
|---|---|
name | Page titles, emails ("Confirm your email for …"), the sign-in apps, the setup script's title. While it's "Acme", a reminder banner shows in development and setup warns before creating products |
tagline | Home page title and share image |
description | Search result snippet and share text. Keep it under about 155 characters |
url | Read from NEXT_PUBLIC_APP_URL. Don't hard-code it |
supportEmail | Legal pages, footer, and the "taking longer than usual" payment message |
checkoutConsent | null, or the text of a required checkbox before checkout. See Checkout consent |
plans
An array of plans. See Plans and pricing for every field and how to change them.
type Plan = {
slug: string; // permanent ID, don't change after selling
name: string;
description: string;
amount: number; // smallest currency unit: 1900 = $19.00
currency: string; // 'USD', 'INR', 'EUR'…
interval: 'month' | 'year' | null; // null = one-time
features: string[];
featured?: boolean;
productEnv: string; // env var holding the Dodo product ID
};Helpers
| Function | Returns |
|---|---|
getPlanBySlug(slug) | The plan, or undefined |
getPlanByProductId(id) | The plan whose productEnv holds this Dodo product ID (server only) |
planProductId(plan) | The plan's Dodo product ID from the environment (server only) |
planPeriod(plan) | "per month", "per year" or "once" |
Other settings
| Setting | Where |
|---|---|
| Landing page words | src/content/landing.ts |
| Brand colour, fonts, text styles | src/app/globals.css |
cacheComponents: true, partialPrefetching: false | next.config.ts. Keep both as they are |
| Function region | vercel.json |
| Database connection for migrations | drizzle.config.ts (reads DATABASE_URL) |