# Configuration

URL: https://ship-and-scale.vercel.app/docs/build/configuration

Choose the settings Kickstart will use to create your app.

Review your app's name and setup defaults before Kickstart creates the hosted services. You can keep the defaults while exploring, or adjust the choices below for your product.

## Before you begin [#before-you-begin]

Complete [Accounts](/docs/accounts) first. Your root `.env`, beside `package.json`, should already contain `SUPABASE_ACCESS_TOKEN`, `STRIPE_TEST_SECRET_KEY` (for the default billing setup) and `RESEND_API_KEY`.

Edit that existing file and keep one line per setting. If you haven't created it or saved your keys, follow [where to save your keys](/docs/accounts#where-to-save-your-keys).

Kickstart reads only the root `.env`, so avoid conflicting values in `.env.local`. The same [privacy rules](/docs/accounts#where-to-save-your-keys) apply to every setting in this file.

## Name your app [#name-your-app]

Update these existing entries in `.env`:

```dotenv
APP_NAME=Forma
APP_URL=http://localhost:3000
```

Replace `Forma` with your product's name, or keep it while exploring. `APP_NAME` sets the configured app name and helps name resources created during setup. It doesn't rename existing provider resources or replace logos, page copy and email wording; those belong in [branding](/docs/build/customization).

Keep the local URL for your first run. Your browser address and the configured URL need to match for sign-in to work.

## Review the setup defaults [#review-the-setup-defaults]

These defaults give you a local app with hosted services and Stripe test billing. Review the database location and initial billing plans before provisioning, because Kickstart uses those choices when it creates resources.

| Choice             | Default                                               | When to change it                                                                                   |
| ------------------ | ----------------------------------------------------- | --------------------------------------------------------------------------------------------------- |
| Database location  | US East, with another available US region as fallback | Set `SUPABASE_REGION` before creation if you need a specific available region.                      |
| Email verification | `AUTH_EMAIL_VERIFICATION=false`                       | Set it to `true` to require new users to confirm their email before signing in.                     |
| AI chat            | `AI_ENABLED=false`                                    | Set it to `true` and add `OPENROUTER_API_KEY` to include AI in your first installation.             |
| Billing            | Enabled with sample Starter, Pro and Growth plans     | Edit `config/billing-seed.json` before installation to change the initial plans or disable billing. |
| Email sender       | Automatic selection                                   | Choose a verified sender if you already have a domain ready.                                        |
| Search indexing    | `SEO_INDEXABLE=false`                                 | Keep it off while building; enable it when your public pages are ready to launch.                   |

If Resend has no verified sending domain, the default test sender delivers only to your Resend account email. Use that exact address for signup and recovery testing. Sending to other people requires a verified domain.

**Choose a database region or organization**

To choose a region, add one `SUPABASE_REGION` entry to `.env` using an available region code for your Supabase organization. The default code is `us-east-1`. Kickstart checks availability before creating the project.

With one accessible Supabase organization, Kickstart selects it automatically. With several, the terminal asks you to choose. For unattended setup, add `SUPABASE_ORGANIZATION_SLUG` with the intended organization's actual slug.

Make these choices before the first run. Changing a region or organization entry later does not move an existing database. Preserve the generated project reference and saved setup state when resuming an installation.

**Require email verification**

Set the existing `AUTH_EMAIL_VERIFICATION` entry to `true`. Kickstart applies it to hosted authentication, so new users must follow their verification email before signing in.

If you change this after installation, follow [email verification](/docs/core/authentication#email-verification) to apply the setting and test the signup flow. Editing `.env` alone doesn't update hosted Auth.

**Include AI chat**

Add your key using the [OpenRouter guide](/docs/accounts/openrouter), then set `AI_ENABLED=true`. You can keep the supplied `AI_MODEL` for your first run. Kickstart checks the configured model and key before installation; provider funding and usage limits apply.

To add AI after your app is installed, follow [enable and install AI](/docs/integrations/ai#enable-and-install).

**Choose your initial billing plans**

Open `config/billing-seed.json`. You can keep the sample plans while testing, or edit their names, descriptions, currency and monthly/yearly amounts before the first installation. Keep the supported `starter`, `pro` and `growth` plan keys. Amounts use the currency's smallest unit; for USD, `1900` means $19.00.

The seed fills missing products and prices during setup. After initialization, the owned Stripe test catalog becomes the place to edit them; changing the seed won't overwrite existing prices. Follow [plans and pricing](/docs/billing/plans#initial-seed-and-later-authoring) for the catalog workflow.

For a fresh app without billing, change the existing top-level `enabled` field to `false`, preserving the rest of the file. Kickstart then skips Stripe provisioning, and the Stripe test key is no longer required. Disabling this setting on an installed app does not cancel existing subscriptions; review [subscriptions](/docs/billing/subscriptions) before removing billing.

**Choose an email sender**

Leave `RESEND_FROM_EMAIL` and `RESEND_TEST_MODE` blank for automatic selection. Kickstart uses a verified sending domain when available and asks you to choose if there are several. Otherwise, local setup uses the restricted test sender described above.

To choose a sender explicitly, set `RESEND_FROM_EMAIL` to an address under your verified domain and `RESEND_TEST_MODE=false`. Follow [verify a production sender](/docs/accounts/resend#verify-a-production-sender) if the domain isn't ready. `CONTACT_TO_EMAIL` is an optional inbox for public contact-form messages.

## Let Kickstart fill in the rest [#let-kickstart-fill-in-the-rest]

On a fresh installation, leave the project keys, project IDs, email template IDs and webhook secrets in the **Kickstart fills in** sections blank. Kickstart saves those values as it creates and connects your services. The optional sender choices above are the exception when you want to override discovery.

If you've already run Kickstart, preserve its generated values and private recovery files. Follow [safe reruns](/docs/start/project-kickstart#safe-reruns) to resume that installation.

For individual environment fields and later source changes, use the [Configuration reference](/docs/build/configuration-reference).

When your local app works, [Deployment Kickstart](/docs/start/deployment-kickstart) covers the extra settings for going live.

## Ready for Kickstart [#ready-for-kickstart]

Save your changes and confirm:

* Your required credentials are in the existing root `.env`.
* Your app name, local URL and setup choices are ready, including an OpenRouter key if you enabled AI.
* Generated fields are blank for a fresh installation, or preserved if you're resuming one.

You can now check the accounts and install your app on the next page.

[Next: Kickstart](/docs/start/project-kickstart)

Check your settings, install the hosted services and run your app.