2025 / config /index.ts
daqc's picture
Initial commit
ad19202
import type { Config } from "./types";
export const config = {
appName: "Your 2025 Hugging Face Wrapped",
// Internationalization
i18n: {
// Whether internationalization should be enabled (if disabled, you still need to define the locale you want to use below and set it as the default locale)
enabled: true,
// Define all locales here that should be available in the app
// You need to define a label that is shown in the language selector and a currency that should be used for pricing with this locale
locales: {
en: {
currency: "USD",
label: "English",
},
de: {
currency: "USD",
label: "Deutsch",
},
},
// The default locale is used if no locale is provided
defaultLocale: "en",
// The default currency is used for pricing if no currency is provided
defaultCurrency: "USD",
// The name of the cookie that is used to determine the locale
localeCookieName: "NEXT_LOCALE",
},
// Organizations
organizations: {
// Whether organizations are enabled in general
enable: false,
// Whether billing for organizations should be enabled (below you can enable it for users instead)
enableBilling: false,
// Whether the organization should be hidden from the user (use this for multi-tenant applications)
hideOrganization: false,
// Should users be able to create new organizations? Otherwise only admin users can create them
enableUsersToCreateOrganizations: true,
// Whether users should be required to be in an organization. This will redirect users to the organization page after sign in
requireOrganization: false,
// Define forbidden organization slugs. Make sure to add all paths that you define as a route after /app/... to avoid routing issues
forbiddenOrganizationSlugs: [
"new-organization",
"admin",
"settings",
"ai-demo",
"organization-invitation",
],
},
// Users
users: {
// Whether billing should be enabled for users (above you can enable it for organizations instead)
enableBilling: false,
// Whether you want the user to go through an onboarding form after signup (can be defined in the OnboardingForm.tsx)
enableOnboarding: false,
},
// Authentication
auth: {
// Whether users should be able to create accounts (otherwise users can only be by admins)
enableSignup: false,
// Whether users should be able to sign in with a magic link
enableMagicLink: false,
// Whether users should be able to sign in with a social provider
enableSocialLogin: false,
// Whether users should be able to sign in with a passkey
enablePasskeys: false,
// Whether users should be able to sign in with a password
enablePasswordLogin: false,
// Whether users should be activate two factor authentication
enableTwoFactor: false,
// where users should be redirected after the sign in
redirectAfterSignIn: "/app",
// where users should be redirected after logout
redirectAfterLogout: "/",
// how long a session should be valid
sessionCookieMaxAge: 60 * 60 * 24 * 30,
},
// Mails
mails: {
// the from address for mails
from: "[email protected]",
},
// Frontend
ui: {
// the themes that should be available in the app
enabledThemes: ["light", "dark"],
// the default theme
defaultTheme: "dark",
// the saas part of the application
saas: {
// whether the saas part should be enabled (otherwise all routes will be redirect to the marketing page)
enabled: false,
// whether the sidebar layout should be used
useSidebarLayout: true,
},
// the marketing part of the application
marketing: {
// whether the marketing features should be enabled (otherwise all routes will be redirect to the saas part)
enabled: true,
},
},
// Storage
storage: {
// define the name of the buckets for the different types of files
bucketNames: {
avatars: "avatars",
},
},
contactForm: {
// whether the contact form should be enabled
enabled: false,
// the email to which the contact form messages should be sent
to: "[email protected]",
// the subject of the email
subject: "Contact form message",
},
// Payments
payments: {
// define the products that should be available in the checkout
plans: {
// The free plan is treated differently. It will automatically be assigned if the user has no other plan.
free: {
isFree: true,
},
pro: {
recommended: true,
prices: [
{
type: "recurring",
productId: process.env
.NEXT_PUBLIC_PRICE_ID_PRO_MONTHLY as string,
interval: "month",
amount: 29,
currency: "USD",
seatBased: true,
trialPeriodDays: 7,
},
{
type: "recurring",
productId: process.env
.NEXT_PUBLIC_PRICE_ID_PRO_YEARLY as string,
interval: "year",
amount: 290,
currency: "USD",
seatBased: true,
trialPeriodDays: 7,
},
],
},
lifetime: {
prices: [
{
type: "one-time",
productId: process.env
.NEXT_PUBLIC_PRICE_ID_LIFETIME as string,
amount: 799,
currency: "USD",
},
],
},
enterprise: {
isEnterprise: true,
},
},
},
} as const satisfies Config;
export type { Config };