monacousa-portal/nuxt.config.ts

163 lines
5.4 KiB
TypeScript

export default defineNuxtConfig({
ssr: false,
compatibilityDate: "2024-11-01",
devtools: { enabled: true },
// Add startup logging
hooks: {
'ready': () => {
console.log('🚀 MonacoUSA Portal Nuxt is ready!')
console.log('Environment:', process.env.NODE_ENV)
console.log('Port:', process.env.NUXT_PORT || process.env.PORT || 3000)
},
'listen': (server, { host, port }) => {
console.log(`🌐 Server listening on http://${host}:${port}`)
}
},
modules: ["vuetify-nuxt-module",
// TEMPORARILY DISABLED FOR TESTING - PWA causing reload loops on mobile Safari
// [
// "@vite-pwa/nuxt",
// {
// registerType: 'autoUpdate',
// workbox: {
// globPatterns: ['**/*.{js,css,html,png,svg,ico}'],
// navigateFallback: '/',
// navigateFallbackDenylist: [/^\/api\//]
// },
// client: {
// installPrompt: true,
// periodicSyncForUpdates: 20
// },
// devOptions: {
// enabled: true,
// suppressWarnings: true,
// navigateFallbackAllowlist: [/^\/$/],
// type: 'module'
// },
// manifest: {
// name: 'MonacoUSA Portal',
// short_name: 'MonacoUSA',
// description: 'MonacoUSA Portal - Unified dashboard for tools and services',
// theme_color: '#a31515',
// background_color: '#ffffff',
// display: 'standalone',
// orientation: 'portrait',
// scope: '/',
// start_url: '/',
// icons: [
// {
// src: 'icon-192x192.png',
// sizes: '192x192',
// type: 'image/png'
// },
// {
// src: 'icon-512x512.png',
// sizes: '512x512',
// type: 'image/png'
// },
// {
// src: 'icon-512x512.png',
// sizes: '512x512',
// type: 'image/png',
// purpose: 'any maskable'
// }
// ]
// }
// }
// ],
"@nuxtjs/device"],
css: [
'vuetify-pro-tiptap/style.css'
],
app: {
head: {
titleTemplate: "%s • MonacoUSA Portal",
title: "MonacoUSA Portal",
meta: [
{ property: "og:title", content: "MonacoUSA Portal" },
{ property: "og:image", content: "/MONACOUSA-Flags_376x376.png" },
{ name: "twitter:card", content: "summary_large_image" },
{ name: "viewport", content: "width=device-width, initial-scale=1" },
{ name: "apple-mobile-web-app-capable", content: "yes" },
{ name: "apple-mobile-web-app-status-bar-style", content: "default" },
{ name: "apple-mobile-web-app-title", content: "MonacoUSA Portal" },
{ name: "theme-color", content: "#a31515" },
],
link: [
{ rel: "icon", type: "image/png", sizes: "32x32", href: "/favicon-32x32.png" },
{ rel: "icon", type: "image/png", sizes: "192x192", href: "/icon-192x192.png" },
{ rel: "apple-touch-icon", sizes: "180x180", href: "/apple-touch-icon.png" },
{ rel: "shortcut icon", href: "/favicon-32x32.png" },
],
htmlAttrs: {
lang: "en",
},
},
},
nitro: {
experimental: {
wasm: true
}
},
runtimeConfig: {
// Server-side configuration
keycloak: {
issuer: process.env.NUXT_KEYCLOAK_ISSUER || "",
clientId: process.env.NUXT_KEYCLOAK_CLIENT_ID || "monacousa-portal",
clientSecret: process.env.NUXT_KEYCLOAK_CLIENT_SECRET || "",
callbackUrl: process.env.NUXT_KEYCLOAK_CALLBACK_URL || "https://portal.monacousa.org/auth/callback",
},
keycloakAdmin: {
issuer: process.env.NUXT_KEYCLOAK_ISSUER || "",
clientId: process.env.NUXT_KEYCLOAK_ADMIN_CLIENT_ID || "admin-cli",
clientSecret: process.env.NUXT_KEYCLOAK_ADMIN_CLIENT_SECRET || "",
},
nocodb: {
url: process.env.NUXT_NOCODB_URL || "",
token: process.env.NUXT_NOCODB_TOKEN || "",
baseId: process.env.NUXT_NOCODB_BASE_ID || "",
eventsBaseId: process.env.NUXT_NOCODB_EVENTS_BASE_ID || "",
eventsTableId: process.env.NUXT_NOCODB_EVENTS_TABLE_ID || "",
rsvpTableId: process.env.NUXT_NOCODB_RSVP_TABLE_ID || "",
},
minio: {
endPoint: process.env.NUXT_MINIO_ENDPOINT || "s3.monacousa.org",
port: parseInt(process.env.NUXT_MINIO_PORT || "443"),
useSSL: process.env.NUXT_MINIO_USE_SSL !== "false",
accessKey: process.env.NUXT_MINIO_ACCESS_KEY || "",
secretKey: process.env.NUXT_MINIO_SECRET_KEY || "",
bucketName: process.env.NUXT_MINIO_BUCKET_NAME || "monacousa-portal",
},
sessionSecret: process.env.NUXT_SESSION_SECRET || "",
encryptionKey: process.env.NUXT_ENCRYPTION_KEY || "",
jwtSecret: process.env.NUXT_JWT_SECRET || process.env.NUXT_SESSION_SECRET || "",
public: {
// Client-side configuration
appName: "MonacoUSA Portal",
domain: process.env.NUXT_PUBLIC_DOMAIN || "https://portal.monacousa.org",
keycloakIssuer: process.env.NUXT_KEYCLOAK_ISSUER || "https://auth.monacousa.org/realms/monacousa",
},
},
vuetify: {
vuetifyOptions: {
theme: {
defaultTheme: "monacousa",
themes: {
monacousa: {
colors: {
primary: "#a31515",
secondary: "#ffffff",
accent: "#f5f5f5",
error: "#ff5252",
warning: "#ff9800",
info: "#2196f3",
success: "#4caf50",
},
},
},
},
},
},
});