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

# Configuration

> Learn how to configure your LaunchIt installation

## Properties

<ResponseField name="appName" type="string" required>
  The name of your application.

  Example: `'LaunchIt'`
</ResponseField>

<ResponseField name="appUrl" type="string" required>
  The URL of your application.

  Example: `process.env.NEXT_PUBLIC_SITE_URL ?? ''`
</ResponseField>

<ResponseField name="appDescription" type="string" required>
  The description of your application. This uses a translation key.

  Example: `'config.appDescription'`
</ResponseField>

<ResponseField name="supportEmail" type="string" required>
  The email address for support inquiries.

  Example: `'info@pfeitec.com'`
</ResponseField>

<ResponseField name="marketingEmail" type="string" required>
  The email address for marketing communications.

  Example: `'info@pfeitec.com'`
</ResponseField>

<ResponseField name="twitterHandle" type="string" optional>
  The Twitter handle for your application.

  Example: `'@yourhandle'`
</ResponseField>

<ResponseField name="onboadingActive" type="boolean" required>
  If you wish to display an onboarding page after the user signs up, you can enable it here. This will per default ask the user for his first name and last name.

  Example: `true`
</ResponseField>

<ResponseField name="blogFolder" type="string" required>
  The folder containing your blog content files.

  Example: `'web/content/blog'`
</ResponseField>

<ResponseField name="i18n" type="I18nConfig" required>
  Internationalization (i18n) configurations.

  <Expandable title="I18nConfig">
    <ResponseField name="enableLangRouting" type="boolean" required>
      Enable or disable the language routing and switching via prefix e.g. `/en`.

      Example: `true`
    </ResponseField>

    <ResponseField name="defaultLocale" type="string" required>
      The default language for your application.

      Example: `'en'`
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="login" type="LoginConfig" required>
  Authentication configurations. LaunchIt supports multiple authentication methods that can be enabled or disabled based on your needs.

  <Expandable title="LoginConfig">
    <ResponseField name="isPasswordLoginActive" type="boolean" required>
      Magic link/password login will still work - this hides the login button, and disables signups. This is useful for beta testing.
      If you want to disable logging in completely, open `web/app/[locale]/(unprotected)/signin/page.tsx` and remove the file or return a 404.

      Example: `true`
    </ResponseField>

    <ResponseField name="isPasswordLoginActive" type="boolean" required>
      Enable traditional email/password login.

      Example: `true`
    </ResponseField>

    <ResponseField name="isMagicLinkLoginActive" type="boolean" required>
      Enable passwordless login via email links.

      Example: `true`
    </ResponseField>

    <ResponseField name="defaultLoginMethod" type="'magic_link' | 'sign_in'" required>
      Set the default login method.

      Example: `'magic_link'`
    </ResponseField>

    <ResponseField name="requireLoginForPurchases" type="boolean" required>
      Toogle if the user needs to be logged in to make a purchase.

      Example: `true`
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="privacyPolicyUrl" type="string" required>
  The URL for the privacy policy. Necessary for legal compliance (Cookie consent banner) and footer.

  Example: `'/privacy'`
</ResponseField>

<ResponseField name="tosUrl" type="string" required>
  The URL for the terms of service. Necessary for legal compliance (Cookie consent banner) and footer.

  Example: `'/tos'`
</ResponseField>

<ResponseField name="cookieBanner" type="CookieBannerConfig" required>
  Cookie consent banner configurations.

  <Expandable title="CookieBannerConfig">
    <ResponseField name="enabled" type="boolean" required>
      Enable or disable the cookie consent banner. If disabled, the banner will not be displayed and every service will be loaded by default.

      Example: `true`
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="services" type="ServicesConfig" required>
  Additional service configurations.

  <Expandable title="ServicesConfig">
    <ResponseField name="posthog" type="boolean" required>
      Enable or disable Posthog analytics.

      Example: `true`
    </ResponseField>

    <ResponseField name="plausible" type="boolean" required>
      Enable or disable Plausible analytics.

      Example: `true`
    </ResponseField>

    <ResponseField name="googleAnalytics" type="boolean" required>
      Enable or disable Google Analytics.

      Example: `false`
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="pricing" type="PricingConfig" required>
  Pricing configurations. LaunchIt supports both subscription and one-time purchase models. The pricing configuration is one of the most complex parts of the setup.

  <Expandable title="PricingConfig">
    <ResponseField name="defaultModel" type="'subscription' | 'one-time'" required>
      Set the default pricing model that is displayed by the `<Pricing />` component.

      Example: `'subscription'`
    </ResponseField>

    <ResponseField name="freeProduct" type="FreeProduct" required>
      Free tier configuration. If you want to display a free tier, you can configure it here. It will automatically redirect to the sign-in page.

      <Expandable title="FreeProduct">
        <ResponseField name="name" type="string" required>
          The name of the free product.

          Example: `'config.pricing.free.title'`
        </ResponseField>

        <ResponseField name="description" type="string" required>
          The description of the free product.

          Example: `'config.pricing.free.description'`
        </ResponseField>

        <ResponseField name="features" type="ProductFeature[]" required>
          An array of features included in the free tier.

          Example: `[ { name: 'config.pricing.features.core1' }, { name: 'config.pricing.features.core2' } ]`
        </ResponseField>

        <ResponseField name="notIncluded" type="ProductFeature[]" optional>
          An array of features explicitly not included.
        </ResponseField>

        <ResponseField name="initialCredits" type="number" optional>
          The number of credits new users receive.

          Example: `3`
        </ResponseField>

        <ResponseField name="enabled" type="boolean" required>
          Toggle the free tier.

          Example: `false`
        </ResponseField>

        <ResponseField name="highlight" type="boolean" optional>
          Whether to highlight this product in the UI.
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="subscriptions" type="SubscriptionProduct[]" required>
      Array of subscription product configurations.

      <Expandable title="SubscriptionProduct">
        <ResponseField name="name" type="string" required>
          The name of the subscription.

          Example: `'config.pricing.subscriptions.basic.name'`
        </ResponseField>

        <ResponseField name="level" type="number" required>
          The hierarchy level of the plan.

          Example: `1`
        </ResponseField>

        <ResponseField name="description" type="string" required>
          The description of the subscription.

          Example: `'config.pricing.subscriptions.basic.description'`
        </ResponseField>

        <ResponseField name="features" type="ProductFeature[]" required>
          An array of features included in the subscription.
        </ResponseField>

        <ResponseField name="notIncluded" type="ProductFeature[]" optional>
          An array of features explicitly not included.
        </ResponseField>

        <ResponseField name="monthly" type="PriceInfo" required>
          Monthly pricing configuration.

          <Expandable title="PriceInfo">
            <ResponseField name="priceId" type="string" required>
              The Stripe price ID for the monthly plan.

              Example: `process.env.NEXT_PUBLIC_STRIPE_STARTER_MONTHLY_PRICE_ID ?? ''`
            </ResponseField>

            <ResponseField name="price" type="number" required>
              The monthly price.

              Example: `9.99`
            </ResponseField>

            <ResponseField name="priceAnchor" type="number" optional>
              The anchor price to show discount.

              Example: `14.99`
            </ResponseField>
          </Expandable>
        </ResponseField>

        <ResponseField name="annually" type="PriceInfo" required>
          Annual pricing configuration.
        </ResponseField>

        <ResponseField name="monthlyCredits" type="number" optional>
          The number of credits awarded each month.

          Example: `100`
        </ResponseField>

        <ResponseField name="promotion" type="PromotionCode" optional>
          Promotion configuration for the subscription.

          <Expandable title="PromotionCode">
            <ResponseField name="code" type="string" required>
              The promotion code for customers. Displayed on the pricing card.

              Example: `'LAUNCH70'`
            </ResponseField>

            <ResponseField name="percentage" type="number" required>
              The discount percentage. Needed for showing the discount badge.

              Example: `70`
            </ResponseField>

            <ResponseField name="stripe_id" type="string" required>
              The corresponding Stripe promotion ID. Needed for automatic application.

              Example: `'promo_1QWMbOCVjR3erEYezwWi7faL'`
            </ResponseField>

            <ResponseField name="autoApply" type="boolean" required>
              Whether to automatically apply the promotion in stripe. (Note: This will force users to use the promotion code. They cannot remove it or use another code.)

              Example: `false`
            </ResponseField>

            <ResponseField name="showBadge" type="boolean" required>
              Whether to show the promotion badge on the pricing card.

              Example: `false`
            </ResponseField>
          </Expandable>
        </ResponseField>

        <ResponseField name="highlight" type="boolean" optional>
          Whether to highlight this plan in the UI.

          Example: `false`
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="oneTimePurchases" type="OneTimePurchaseProduct[]" required>
      Array of one-time purchase configurations.

      <Expandable title="OneTimePurchaseProduct">
        <ResponseField name="name" type="string" required>
          The name of the one-time purchase.

          Example: `'config.pricing.oneTime.starter.name'`
        </ResponseField>

        <ResponseField name="level" type="number" required>
          The hierarchy level of the purchase.

          Example: `1`
        </ResponseField>

        <ResponseField name="description" type="string" required>
          The description of the one-time purchase.

          Example: `'config.pricing.oneTime.starter.description'`
        </ResponseField>

        <ResponseField name="features" type="ProductFeature[]" required>
          An array of features included in the purchase.
        </ResponseField>

        <ResponseField name="notIncluded" type="ProductFeature[]" optional>
          An array of features explicitly not included.
        </ResponseField>

        <ResponseField name="price" type="PriceInfo" required>
          Pricing configuration for the one-time purchase.
        </ResponseField>

        <ResponseField name="totalCredits" type="number" optional>
          The total credits included with the purchase.

          Example: `100`
        </ResponseField>

        <ResponseField name="validityPeriod" type="'lifetime' | `${number}-months`" required>
          The validity period of the purchase.

          Example: `'lifetime'`
        </ResponseField>

        <ResponseField name="promotion" type="PromotionCode" optional>
          Promotion configuration for the purchase.
        </ResponseField>

        <ResponseField name="highlight" type="boolean" optional>
          Whether to highlight this purchase in the UI.

          Example: `false`
        </ResponseField>
      </Expandable>
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="navigation" type="NavigationConfig" required>
  Navigation configurations.

  <Expandable title="NavigationConfig">
    <ResponseField name="isSticky" type="boolean" required>
      Whether the navigation bar is sticky.

      Example: `true`
    </ResponseField>
  </Expandable>
</ResponseField>

## oAuth Providers

<ResponseField name="oAuthProviders" type="OAuthProvider[]" required>
  Array of OAuth provider configurations. See [List of supported OAuth Providers](https://supabase.com/docs/guides/auth#social-auth).

  This will be automatically used in the `<OAuthSignIn />` component on the sign-in page.

  <Expandable title="OAuthProvider">
    <ResponseField name="name" type="Provider" required>
      The name of the OAuth provider.

      Example: `'github'`
    </ResponseField>

    <ResponseField name="displayName" type="string" required>
      The display name for the provider.

      Example: `'GitHub'`
    </ResponseField>

    <ResponseField name="icon" type="JSX.Element" required>
      The icon configuration for the provider.
    </ResponseField>
  </Expandable>
</ResponseField>

## Further Information

<Warning>
  **Validation Checks:**

  * At least one authentication provider must be active (either password login, magic link login, or an OAuth provider).
  * The default login method must be active.
</Warning>
