From 9ae37f98ed08b775c045caff169c7036ee476c1d Mon Sep 17 00:00:00 2001 From: Zed Date: Fri, 10 Jul 2026 15:25:35 +0200 Subject: [PATCH] pwa update --- .gitignore | 24 -------------------- index.html | 14 +++++++++--- nginx.conf | 20 +++++++++++----- public/apple-touch-icon.png | Bin 0 -> 2638 bytes public/favicon-32.png | Bin 0 -> 1272 bytes public/favicon.ico | Bin 0 -> 3969 bytes public/pwa-192x192.png | Bin 0 -> 4553 bytes public/pwa-512x512.png | Bin 0 -> 13336 bytes public/pwa-maskable-512x512.png | Bin 0 -> 8098 bytes vite.config.ts | 39 +++++++++++++++++++++++++++----- 10 files changed, 58 insertions(+), 39 deletions(-) delete mode 100644 .gitignore create mode 100644 public/apple-touch-icon.png create mode 100644 public/favicon-32.png create mode 100644 public/favicon.ico create mode 100644 public/pwa-192x192.png create mode 100644 public/pwa-512x512.png create mode 100644 public/pwa-maskable-512x512.png diff --git a/.gitignore b/.gitignore deleted file mode 100644 index a547bf3..0000000 --- a/.gitignore +++ /dev/null @@ -1,24 +0,0 @@ -# Logs -logs -*.log -npm-debug.log* -yarn-debug.log* -yarn-error.log* -pnpm-debug.log* -lerna-debug.log* - -node_modules -dist -dist-ssr -*.local - -# Editor directories and files -.vscode/* -!.vscode/extensions.json -.idea -.DS_Store -*.suo -*.ntvs* -*.njsproj -*.sln -*.sw? diff --git a/index.html b/index.html index fa46007..ec77368 100644 --- a/index.html +++ b/index.html @@ -2,14 +2,22 @@ - + + + - + + + + Skori diff --git a/nginx.conf b/nginx.conf index 0b309c1..716d53e 100644 --- a/nginx.conf +++ b/nginx.conf @@ -5,21 +5,29 @@ server { index index.html; # Important pour les Single Page Applications (React Router) - # Si le fichier n'existe pas, on redirige vers index.html location / { try_files $uri $uri/ /index.html; } - # Mise en cache agressive pour les assets statiques - location ~* \.(?:ico|css|js|gif|jpe?g|png|woff2?|eot|ttf|svg|webp)$ { + # Mise en cache agressive pour les assets statiques fingerprintés + location ~* \.(?:css|js|gif|jpe?g|png|woff2?|eot|ttf|svg|webp|ico|pdf)$ { expires 6M; access_log off; add_header Cache-Control "public, max-age=15552000, immutable"; } - # Ne pas mettre en cache le service worker pour que la PWA se mette à jour + # Jamais de cache sur les fichiers pilotant les mises à jour PWA + location = /index.html { + add_header Cache-Control "no-cache, must-revalidate"; + } location = /sw.js { - expires -1; - add_header Cache-Control "no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0"; + add_header Cache-Control "no-store, no-cache, must-revalidate, max-age=0"; + } + location = /manifest.webmanifest { + add_header Cache-Control "no-cache, must-revalidate"; + types { } default_type application/manifest+json; + } + location ~* ^/workbox-.*\.js$ { + add_header Cache-Control "public, max-age=15552000, immutable"; } } diff --git a/public/apple-touch-icon.png b/public/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..597f7440d7bd765e3b44f12e3ead7bd16f2f49d9 GIT binary patch literal 2638 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 EKebyAr2qf` literal 0 HcmV?d00001 diff --git a/public/favicon-32.png b/public/favicon-32.png new file mode 100644 index 0000000000000000000000000000000000000000..1915de8097af82ec800900249aabee55b9ffbc70 GIT binary patch literal 1272 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 literal 0 HcmV?d00001 diff --git a/public/pwa-192x192.png b/public/pwa-192x192.png new file mode 100644 index 0000000000000000000000000000000000000000..896b0ffe952e6ccf34c1777c300583438f094709 GIT binary patch literal 4553 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 PF!WGST_IQg#hd>Fs`6;# literal 0 HcmV?d00001 diff --git a/public/pwa-maskable-512x512.png b/public/pwa-maskable-512x512.png new file mode 100644 index 0000000000000000000000000000000000000000..6b47dcb12d88268db2ea318db28663f89ea9dddd GIT binary patch literal 8098 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 U4ulGV+&gerNkj3?9m^;G0ktFhZvX%Q literal 0 HcmV?d00001 diff --git a/vite.config.ts b/vite.config.ts index 2d6afa2..d8d86aa 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -8,15 +8,20 @@ export default defineConfig({ react(), VitePWA({ registerType: "autoUpdate", - includeAssets: ["favicon.ico", "apple-touch-icon.png", "mask-icon.svg"], + includeAssets: ["favicon.ico", "apple-touch-icon.png"], manifest: { - name: "Skori", + name: "Skori — Scores de jeux de société", short_name: "Skori", description: "Application Web de gestion des scores pour jeux de société", - theme_color: "#ffffff", - background_color: "#ffffff", + lang: "fr", + start_url: "/", + scope: "/", display: "standalone", + orientation: "portrait", + theme_color: "#0f766e", + background_color: "#ffffff", + categories: ["games", "utilities"], icons: [ { src: "pwa-192x192.png", @@ -29,13 +34,35 @@ export default defineConfig({ type: "image/png", }, { - src: "pwa-512x512.png", + src: "pwa-maskable-512x512.png", sizes: "512x512", type: "image/png", - purpose: "any maskable", + purpose: "maskable", }, ], }, + workbox: { + // Précache le shell de l'app + les logos/bannières (légers, en webp) + globPatterns: ["**/*.{js,css,html,ico,png,svg,webp,woff2}"], + // Les PDF de règles (jusqu'à 12 Mo) ne sont PAS précachés : + // ils sont mis en cache à la demande, à la première consultation. + runtimeCaching: [ + { + urlPattern: /\/games-assets\/.*\.pdf$/, + handler: "CacheFirst", + options: { + cacheName: "rules-pdf", + expiration: { + maxEntries: 10, + maxAgeSeconds: 60 * 60 * 24 * 90, // 90 jours + }, + cacheableResponse: { statuses: [0, 200] }, + }, + }, + ], + navigateFallback: "/index.html", + cleanupOutdatedCaches: true, + }, }), ], resolve: {