// https://nuxt.com/docs/api/configuration/nuxt-config export default defineNuxtConfig({ compatibilityDate: "2025-07-15", devtools: { enabled: false }, modules: ["@nuxt/eslint", "@nuxt/ui", "@nuxtjs/plausible"], fonts: { providers: { google: false, fontsource: false, }, }, colorMode: { preference: "system", fallback: "light", classSuffix: "", }, app: { head: { htmlAttrs: { lang: "en" }, title: "Ghost Guild", titleTemplate: "%s ยท Ghost Guild", link: [ { rel: "preconnect", href: "https://fonts.googleapis.com" }, { rel: "preconnect", href: "https://fonts.gstatic.com", crossorigin: "", }, { rel: "stylesheet", href: "https://fonts.googleapis.com/css2?family=Brygada+1918:ital,wght@0,400..700;1,400..700&family=Commit+Mono&display=swap", }, ], }, }, build: { transpile: ["vue-cal"], }, routeRules: { "/policies/code-of-conduct": { redirect: { to: "https://publish.obsidian.md/baby-ghosts-corp-docs/Public/Policies/Code+of+Conduct", statusCode: 302, }, }, "/policies/conflict-resolution": { redirect: { to: "https://publish.obsidian.md/baby-ghosts-corp-docs/Public/Policies/Conflict+Resolution+Policy", statusCode: 302, }, }, }, plausible: { domain: "ghostguild.org", }, css: ["~/assets/css/main.css"], vite: { optimizeDeps: { include: ["@plausible-analytics/tracker"], }, server: { allowedHosts: [".trycloudflare.com", ".ngrok-free.app", ".ngrok.io"], hmr: { port: 24678, }, watch: { ignored: [ "**/.git/**", "**/.nuxt/**", "**/.output/**", "**/node_modules/**", "**/dist/**", "**/e2e/**", "**/coverage/**", ], }, }, }, nitro: { watchOptions: { ignored: [ "**/.git/**", "**/.nuxt/**", "**/.output/**", "**/node_modules/**", "**/dist/**", "**/e2e/**", "**/coverage/**", ], }, }, runtimeConfig: { // Private keys (server-side only) mongodbUri: process.env.MONGODB_URI || "mongodb://localhost:27017/ghostguild", jwtSecret: process.env.JWT_SECRET || "", resendApiKey: process.env.RESEND_API_KEY || "", helcimApiToken: process.env.HELCIM_API_TOKEN || "", // also exposed to client via public.helcimToken slackBotToken: process.env.SLACK_BOT_TOKEN || "", slackAdminBotToken: process.env.SLACK_ADMIN_BOT_TOKEN || "", slackSigningSecret: process.env.SLACK_SIGNING_SECRET || "", slackVettingChannelId: process.env.SLACK_VETTING_CHANNEL_ID || "", oidcClientId: process.env.OIDC_CLIENT_ID || "outline-wiki", oidcClientSecret: process.env.OIDC_CLIENT_SECRET || "", oidcCookieSecret: process.env.OIDC_COOKIE_SECRET || "", outlineApiKey: process.env.OUTLINE_API_KEY || "", helcimMonthlyPlanId: process.env.NUXT_HELCIM_MONTHLY_PLAN_ID || "", helcimAnnualPlanId: process.env.NUXT_HELCIM_ANNUAL_PLAN_ID || "", // Public keys (available on client-side) public: { helcimToken: process.env.HELCIM_API_TOKEN || "", helcimAccountId: process.env.NUXT_PUBLIC_HELCIM_ACCOUNT_ID || "", cloudinaryCloudName: process.env.NUXT_PUBLIC_CLOUDINARY_CLOUD_NAME || "divzuumlr", appUrl: process.env.NUXT_PUBLIC_APP_URL || "http://localhost:3000", comingSoon: process.env.NUXT_PUBLIC_COMING_SOON || "false", helcimPortalUrl: process.env.NUXT_PUBLIC_HELCIM_PORTAL_URL || "", }, }, });