From e8aa9d6f3b56978c2d2441e093d07bbd1be84ff6 Mon Sep 17 00:00:00 2001 From: Gilles Soulier Date: Sun, 24 May 2026 05:21:29 +0200 Subject: [PATCH] =?UTF-8?q?feat:=20PWA=20configur=C3=A9e=20=E2=80=94=20ser?= =?UTF-8?q?vice=20worker,=20manifest,=20ic=C3=B4nes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/public/icons/icon-192.png | Bin 0 -> 1014 bytes frontend/public/icons/icon-512.png | Bin 0 -> 2838 bytes frontend/vite.config.ts | 35 ++++++++++++++++++++++++++++- 3 files changed, 34 insertions(+), 1 deletion(-) create mode 100644 frontend/public/icons/icon-192.png create mode 100644 frontend/public/icons/icon-512.png diff --git a/frontend/public/icons/icon-192.png b/frontend/public/icons/icon-192.png new file mode 100644 index 0000000000000000000000000000000000000000..8aadea94023f2d311c7f3e8ca67a524d2d0bf9f4 GIT binary patch literal 1014 zcmeAS@N?(olHy`uVBq!ia0vp^2SAvE2}s`E_d9@rfqAc|i(^Q|oVRyvgQNomS}z`a znkz6d@ZO~G=em`ad@?7N1|=$|tgHLA&r)5j;_m0Yl3gv!uTOu@Yxnx}Vtxm6MnORV zLAnwX*Z12U(6QhDf7g@a`~Gg&Za=T=AOCYboo9P&zi&C-uukY~^*6E0`zvO*uUW2q4cX;aeT-}VhF9$u|5>iCXAZr-`Rn}s)(gJ9l@IX`lnMBH@BWLq zOHCKt>)pS+WYMVxukybOkL~=$ly&FR(^t!0b9V%uVp_F(!TbxR$-xe>vwcN;ql5!4 z`mJA-dT&<4jFrj@roFC+6%7_=3E6mDdZvA~ql1r`?Sh}-AFj3KCsaA`m|HD)IQ@N| z+WW*3hcoI5O2y2x{@mNQf8*^L(gLDwY$o3h*w74DalDm6%G6p(2xVW*KeA`=_KKZ+WmBO>x zau=SQE|))SZeXj>rp=M@Lv+u|pPR*5wwS*8D5kaS9Y@E;ET&aE`ogam<@-8BpZ6-ezD?pWy#!cJ*7;y zs^)o}w$$HvPW{c58|QC&y_C`U%4Rj|=bW^8T3en;zsNYTI^$#spBVp(2aS@tbIu*q zW3t*6?RmPqc+2_*zPwo%>n>T|NOoAhPU!NzMV4E?H{9E?VY#jN=eCB9H9yN0-nn59 gTAX1{u|yqnnEvLcib8G=f%%!i)78&qol`;+06txi!TH=Xa_|KNC}}##yd9*ZCEEgZJC^6|w#(|2(Oy#ju)WI~d1W6`0NK0qUpZPaktH1U> zXYKvnZ|}3ucdp_kZnBS8pceqZhqF2HPXNF!7X}2(90*J}2Y}c2oW%I_QuV#>Q+EdS zk>dEbdxpQ=%;?E_c&CfJrq9Fo$52yPR-x_8%BTm-MKr=T@eOSlRPL}@2Pj~_W1r0z zpiCSHO#$Ge-_38W1!XZao(RQ$x3>F%v-Yv$Ozy>|*zy_s*rW!!Z#|migAa>Y`b2G9m~r#eY=Q3ND9UUb|+&Ow7@@ozwXLrmwyZ?0IHW)@yQmIo{-?j+_SV_KA7mvykonDy{v)jDkuiV2?i@uS zIuS~p!lOwY&R|wDbqN^BE10}&8r>2LO)&;?a$`NGj=caJmuxpbm>5Wf(e6Sy%xet6 zABBnQ4&OOW>p9k8|4N{c?Zu@Q!bG)jF@ zn!$z>Ne#3|H1+|1sXP>2wY()luD8+dB8s<@v&Tu&Q5{8_4JkbMIPpuhW(N z!WsY)iD-_nO{G8BoCGp{*hAMmmtE!FjS^}z4+*jlxfg-LvzgV3>`M0n7M{+m>pa18 z7qww9@*l76m-_=G(vAGruK4y13|6B%QrOI$>tv}IH>ofA<#0b+5i$=eZHayxzTG z?k_A4SliUMr|3nnZnXZP_xS5BluP=(9MM8?0t#fx3E6O0eq0>BfT?Gmax5t9V zCA;7jwnR0oQr{!SRVwE$|6humI-Bwpeu&?h_X||Y#n5Xd9n;bN$HD-UyS_p7ZlFt1 z40DQ7Z!)Bgf5-t}sbya?hys@cjk+bsFulg|>dw7#?)=+?&gO3%= zs*}Oe6`Ak>jq6QnFZ{F1Vd9X^4n@T$#xxiWJYMZ`4#MdE-d^-?lGQM}n9Her!{~bR zPHYVK{^Q2;*hn}Nmd?r00?BX*>hG)n`xe+eza$R->sZelr(OTMfRn^cY~CcQ{5Ope Bj&cA1 literal 0 HcmV?d00001 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 },