Python 64.6%
TypeScript 33.7%
CSS 0.8%
1import { fileURLToPath, URL } from 'node:url';2import { defineConfig } from 'vite';3import react from '@vitejs/plugin-react';4import { VitePWA } from 'vite-plugin-pwa';56export default defineConfig({7 resolve: { alias: { '@': fileURLToPath(new URL('./src', import.meta.url)) } },8 plugins: [9 react(),10 VitePWA({11 registerType: 'autoUpdate',12 includeAssets: ['icons/*.png', 'icons/*.svg', 'uqo-logo.png', 'uqo-logo-white.png'],13 manifest: {14 name: 'UQO-Chat',15 short_name: 'UQO-Chat',16 description: 'Tuteur IA — IMM1003 · IMM1033 (UQO)',17 lang: 'fr-CA',18 display: 'standalone',19 start_url: '/',20 scope: '/',21 theme_color: '#0F6180',22 background_color: '#FFFFFF',23 icons: [24 { src: '/icons/icon-192.png', sizes: '192x192', type: 'image/png' },25 { src: '/icons/icon-512.png', sizes: '512x512', type: 'image/png' },26 { src: '/icons/icon-maskable-512.png', sizes: '512x512', type: 'image/png', purpose: 'maskable' },27 ],28 },29 workbox: {30 navigateFallback: '/index.html',31 navigateFallbackDenylist: [/^\/api\//],32 globPatterns: ['**/*.{js,css,html,svg,png,woff2}'],33 maximumFileSizeToCacheInBytes: 6 * 1024 * 1024,34 runtimeCaching: [35 {36 urlPattern: /\/api\/v1\/(conversations|courses|me)(\?.*)?$/,37 handler: 'NetworkFirst',38 options: { cacheName: 'api-read', networkTimeoutSeconds: 4, expiration: { maxEntries: 60, maxAgeSeconds: 86400 } },39 },40 {41 urlPattern: /\/api\/v1\/conversations\/[a-f0-9]+$/,42 handler: 'NetworkFirst',43 options: { cacheName: 'api-conv', networkTimeoutSeconds: 4, expiration: { maxEntries: 40, maxAgeSeconds: 86400 } },44 },45 {46 urlPattern: /^https:\/\/fonts\.(googleapis|gstatic)\.com\//,47 handler: 'CacheFirst',48 options: { cacheName: 'fonts', expiration: { maxEntries: 20, maxAgeSeconds: 31536000 } },49 },50 ],51 },52 }),53 ],54 server: {55 port: 5173,56 proxy: { '/api': { target: 'http://127.0.0.1:8190', changeOrigin: true } },57 },58 build: {59 sourcemap: false,60 rollupOptions: {61 output: {62 manualChunks: {63 markdown: ['react-markdown', 'remark-gfm', 'remark-math', 'rehype-katex'],64 charts: ['recharts'],65 },66 },67 },68 },69});70