diff --git a/frontend/public/icons/icon-192.png b/frontend/public/icons/icon-192.png new file mode 100644 index 0000000..8aadea9 Binary files /dev/null and b/frontend/public/icons/icon-192.png differ diff --git a/frontend/public/icons/icon-512.png b/frontend/public/icons/icon-512.png new file mode 100644 index 0000000..e4f1658 Binary files /dev/null and b/frontend/public/icons/icon-512.png differ diff --git a/frontend/vite.config.ts b/frontend/vite.config.ts index b483ec7..b3ef9e9 100644 --- a/frontend/vite.config.ts +++ b/frontend/vite.config.ts @@ -1,8 +1,41 @@ import { defineConfig } from 'vite' import react from '@vitejs/plugin-react' +import { VitePWA } from 'vite-plugin-pwa' export default defineConfig({ - plugins: [react()], + plugins: [ + react(), + VitePWA({ + registerType: 'autoUpdate', + workbox: { + globPatterns: ['**/*.{js,css,html,ico,png,svg,webp,woff2}'], + runtimeCaching: [ + { + urlPattern: /^\/api\//, + handler: 'NetworkFirst', + options: { + cacheName: 'api-cache', + expiration: { maxEntries: 100, maxAgeSeconds: 86400 }, + }, + }, + ], + }, + manifest: { + name: 'HomeHub', + short_name: 'HomeHub', + description: 'Organisation personnelle auto-hébergée', + theme_color: '#fe8019', + background_color: '#2a231d', + display: 'standalone', + orientation: 'portrait-primary', + start_url: '/', + icons: [ + { src: '/icons/icon-192.png', sizes: '192x192', type: 'image/png' }, + { src: '/icons/icon-512.png', sizes: '512x512', type: 'image/png', purpose: 'any maskable' }, + ], + }, + }), + ], server: { proxy: { '/api': { target: 'http://localhost:8000', changeOrigin: true },