import { defineConfig } from 'vite'; import react from '@vitejs/plugin-react'; import { VitePWA } from 'vite-plugin-pwa'; import fs from 'fs'; export default defineConfig({ plugins: [ react(), VitePWA({ registerType: 'autoUpdate', includeAssets: ['favicon.ico', 'robots.txt', 'apple-touch-icon.png'], injectRegister: 'auto', devOptions: { enabled: true }, manifest: { name: 'PTT Live', short_name: 'PTT Live', description: 'Professional WebRTC Intercom for Event Technicians', theme_color: '#1a1a1a', background_color: '#1a1a1a', display: 'standalone', scope: '/', start_url: '/', orientation: 'portrait', icons: [ { src: 'pwa-192x192.png', sizes: '192x192', type: 'image/png' }, { src: 'pwa-512x512.png', sizes: '512x512', type: 'image/png' }, { src: 'pwa-512x512.png', sizes: '512x512', type: 'image/png', purpose: 'any maskable' } ] }, workbox: { runtimeCaching: [ { urlPattern: /^https:\/\/.*\.livekit\.cloud\/.*/i, handler: 'NetworkFirst', options: { cacheName: 'livekit-cache', expiration: { maxEntries: 10, maxAgeSeconds: 60 * 60 * 24 // 24 hours } } } ] } }) ], server: { port: 5173, host: true, https: { key: fs.readFileSync('./localhost+3-key.pem'), cert: fs.readFileSync('./localhost+3.pem'), }, proxy: { '/api': { target: 'http://192.168.0.146:3000', changeOrigin: true, rewrite: (path) => path.replace(/^\/api/, '') }, '/livekit': { target: 'ws://192.168.0.146:7880', ws: true, changeOrigin: true, rewrite: (path) => path.replace(/^\/livekit/, '') } } }, build: { outDir: 'dist', sourcemap: true } });