// https://nuxt.com/docs/api/configuration/nuxt-config
export default defineNuxtConfig({
  compatibilityDate: "2025-07-15",
  devtools: { enabled: process.env.NODE_ENV !== "production" },
  modules: ["@nuxt/eslint", "@nuxt/ui", "@nuxtjs/plausible"],
  colorMode: {
    preference: "system",
    fallback: "light",
    classSuffix: "",
  },
  app: {
    head: {
      htmlAttrs: { lang: "en" },
      title: "Ghost Guild",
      titleTemplate: "%s · Ghost Guild",
    },
  },
  build: {
    transpile: ["vue-cal"],
  },
  plausible: {
    domain: "ghostguild.org",
  },
  css: ["~/assets/css/main.css"],
  vite: {
    optimizeDeps: {
      include: ["@plausible-analytics/tracker"],
    },
    server: {
      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 || "",
    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 || "",

    // 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",
    },
  },
});
