Some checks failed
ParentFlow CI/CD Pipeline / Backend Tests (push) Has been cancelled
ParentFlow CI/CD Pipeline / Frontend Tests (push) Has been cancelled
ParentFlow CI/CD Pipeline / Security Scanning (push) Has been cancelled
ParentFlow CI/CD Pipeline / Build Docker Images (map[context:maternal-app/maternal-app-backend dockerfile:Dockerfile.production name:backend]) (push) Has been cancelled
ParentFlow CI/CD Pipeline / Build Docker Images (map[context:maternal-web dockerfile:Dockerfile.production name:frontend]) (push) Has been cancelled
ParentFlow CI/CD Pipeline / Deploy to Development (push) Has been cancelled
ParentFlow CI/CD Pipeline / Deploy to Production (push) Has been cancelled
CI/CD Pipeline / Lint and Test (push) Has been cancelled
CI/CD Pipeline / E2E Tests (push) Has been cancelled
CI/CD Pipeline / Build Application (push) Has been cancelled
## Error Handling System - Add centralized error handling utilities (errorHandler.ts) - Create reusable error components (ErrorMessage, ErrorToast) - Implement multilingual error support (preserves backend error messages in 5 languages) - Update 15+ forms and components with consistent error handling - Auth forms: login, register, forgot-password - Family management: family page, join family dialog - Child management: child dialog - All tracking forms: feeding, sleep, diaper, medicine, growth, activity ## Production Build Fixes - Fix backend TypeScript errors: InviteCode.uses → InviteCode.useCount (5 instances) - Remove non-existent savedFamily variable from registration response - Fix admin panel TypeScript errors: SimpleMDE toolbar type, PieChart label type ## User Experience Improvements - Auto-uppercase invite code and share code inputs - Visual feedback for case conversion with helper text - Improved form validation with error codes ## CI/CD Pipeline - Create comprehensive production deployment checklist (PRODUCTION_DEPLOYMENT_CHECKLIST.md) - Add automated pre-deployment check script (pre-deploy-check.sh) - Validates frontend, backend, and admin panel builds - Checks git status, branch, and sync state - Verifies environment files and migrations - Add quick start deployment guide (DEPLOYMENT_QUICK_START.md) - Add production deployment automation template (deploy-production.sh) ## Cleanup - Remove outdated push notifications documentation files - Remove outdated PWA implementation plan 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
2 lines
14 KiB
JavaScript
2 lines
14 KiB
JavaScript
if(!self.define){let e,a={};const s=(s,c)=>(s=new URL(s+".js",c).href,a[s]||new Promise(a=>{if("document"in self){const e=document.createElement("script");e.src=s,e.onload=a,document.head.appendChild(e)}else e=s,importScripts(s),a()}).then(()=>{let e=a[s];if(!e)throw new Error(`Module ${s} didn’t register its module`);return e}));self.define=(c,i)=>{const n=e||("document"in self?document.currentScript.src:"")||location.href;if(a[n])return;let t={};const f=e=>s(e,n),d={module:{uri:n},exports:t,require:f};a[n]=Promise.all(c.map(e=>d[e]||f(e))).then(e=>(i(...e),t))}}define(["./workbox-4d767a27"],function(e){"use strict";importScripts(),self.skipWaiting(),e.clientsClaim(),e.precacheAndRoute([{url:"/_next/app-build-manifest.json",revision:"5a8f35cf06d319a9f3d015ceb3053479"},{url:"/_next/static/chunks/1188.fa631a3022361a07.js",revision:"fa631a3022361a07"},{url:"/_next/static/chunks/1255-b2f7fd83e387a9e1.js",revision:"b2f7fd83e387a9e1"},{url:"/_next/static/chunks/1280-077bbec6d00a7de6.js",revision:"077bbec6d00a7de6"},{url:"/_next/static/chunks/1506-57bcf8bf9f272f75.js",revision:"57bcf8bf9f272f75"},{url:"/_next/static/chunks/164f4fb6.cb2a48d4da4418c4.js",revision:"cb2a48d4da4418c4"},{url:"/_next/static/chunks/1733-cce5309a9609067d.js",revision:"cce5309a9609067d"},{url:"/_next/static/chunks/189-453061dd646fdba4.js",revision:"453061dd646fdba4"},{url:"/_next/static/chunks/1930-da5165ca7d15ef37.js",revision:"da5165ca7d15ef37"},{url:"/_next/static/chunks/2262-26293d6453fcc927.js",revision:"26293d6453fcc927"},{url:"/_next/static/chunks/2512.67f6c5ac1870b898.js",revision:"67f6c5ac1870b898"},{url:"/_next/static/chunks/2535-67793e78b7c2b0b4.js",revision:"67793e78b7c2b0b4"},{url:"/_next/static/chunks/2619-04bc32f026a0d946.js",revision:"04bc32f026a0d946"},{url:"/_next/static/chunks/2808-256909a929d60aea.js",revision:"256909a929d60aea"},{url:"/_next/static/chunks/2931.14c1e0fb7788f4ba.js",revision:"14c1e0fb7788f4ba"},{url:"/_next/static/chunks/2f0b94e8.3186a98eb4c9012b.js",revision:"3186a98eb4c9012b"},{url:"/_next/static/chunks/3127-49a95e7cb556ace3.js",revision:"49a95e7cb556ace3"},{url:"/_next/static/chunks/3324-0fdb02bda3e734f2.js",revision:"0fdb02bda3e734f2"},{url:"/_next/static/chunks/3423-c1add4fe74d2aa37.js",revision:"c1add4fe74d2aa37"},{url:"/_next/static/chunks/3539-a39b8a3af7932559.js",revision:"a39b8a3af7932559"},{url:"/_next/static/chunks/3664-56dedfcaec4aaceb.js",revision:"56dedfcaec4aaceb"},{url:"/_next/static/chunks/3882-3010edee225b0edd.js",revision:"3010edee225b0edd"},{url:"/_next/static/chunks/4199.bc1715114dd19eda.js",revision:"bc1715114dd19eda"},{url:"/_next/static/chunks/4259-dfb1be8f3af54c21.js",revision:"dfb1be8f3af54c21"},{url:"/_next/static/chunks/4337-6c756374da7aa8e3.js",revision:"6c756374da7aa8e3"},{url:"/_next/static/chunks/4710-9f9aefe46e6a48d5.js",revision:"9f9aefe46e6a48d5"},{url:"/_next/static/chunks/4bd1b696-100b9d70ed4e49c1.js",revision:"100b9d70ed4e49c1"},{url:"/_next/static/chunks/5125-c990fc036d2a6ce4.js",revision:"c990fc036d2a6ce4"},{url:"/_next/static/chunks/5380-9004e1ac3565daca.js",revision:"9004e1ac3565daca"},{url:"/_next/static/chunks/551.26e2933365d2f96d.js",revision:"26e2933365d2f96d"},{url:"/_next/static/chunks/5567-c2b5691445e8828d.js",revision:"c2b5691445e8828d"},{url:"/_next/static/chunks/6012-e07be77edf7a476f.js",revision:"e07be77edf7a476f"},{url:"/_next/static/chunks/6088-c165c565edce02be.js",revision:"c165c565edce02be"},{url:"/_next/static/chunks/6181-66be9b76f10d48f6.js",revision:"66be9b76f10d48f6"},{url:"/_next/static/chunks/6206-1b3859e1902bcca4.js",revision:"1b3859e1902bcca4"},{url:"/_next/static/chunks/6226-11979d85444f757f.js",revision:"11979d85444f757f"},{url:"/_next/static/chunks/658-13ff2003b6585776.js",revision:"13ff2003b6585776"},{url:"/_next/static/chunks/670-a4ca0f366ee779f5.js",revision:"a4ca0f366ee779f5"},{url:"/_next/static/chunks/6873-ff265086321345c8.js",revision:"ff265086321345c8"},{url:"/_next/static/chunks/6886-40f1779ffff00d58.js",revision:"40f1779ffff00d58"},{url:"/_next/static/chunks/710-3bb47c7f5ae91077.js",revision:"3bb47c7f5ae91077"},{url:"/_next/static/chunks/7741-0af8b5a61d8e63d3.js",revision:"0af8b5a61d8e63d3"},{url:"/_next/static/chunks/787-032067ae978e62a8.js",revision:"032067ae978e62a8"},{url:"/_next/static/chunks/7902-e1f71c3b4c62bff9.js",revision:"e1f71c3b4c62bff9"},{url:"/_next/static/chunks/8287-35c2c0bcf242655f.js",revision:"35c2c0bcf242655f"},{url:"/_next/static/chunks/8423-ac92fec5ac4dabe7.js",revision:"ac92fec5ac4dabe7"},{url:"/_next/static/chunks/8544.92db50305f3f0fa4.js",revision:"92db50305f3f0fa4"},{url:"/_next/static/chunks/8863-7b43165e8b5cae38.js",revision:"7b43165e8b5cae38"},{url:"/_next/static/chunks/9205-f540995b767df00b.js",revision:"f540995b767df00b"},{url:"/_next/static/chunks/9333-edf14831f0a39549.js",revision:"edf14831f0a39549"},{url:"/_next/static/chunks/9397-40b8ac68e22a4d87.js",revision:"40b8ac68e22a4d87"},{url:"/_next/static/chunks/9410-5387282e509502da.js",revision:"5387282e509502da"},{url:"/_next/static/chunks/9515-e88b59e87a9d336f.js",revision:"e88b59e87a9d336f"},{url:"/_next/static/chunks/9517-17518b5fffe76114.js",revision:"17518b5fffe76114"},{url:"/_next/static/chunks/9580-031d243edbbe82e5.js",revision:"031d243edbbe82e5"},{url:"/_next/static/chunks/9738-d4ae78df35beeba7.js",revision:"d4ae78df35beeba7"},{url:"/_next/static/chunks/978-7c7f8d135df0c6da.js",revision:"7c7f8d135df0c6da"},{url:"/_next/static/chunks/ad2866b8.e13a3cf75ccf0eb8.js",revision:"e13a3cf75ccf0eb8"},{url:"/_next/static/chunks/app/(auth)/forgot-password/page-a8d6f5adc0742141.js",revision:"a8d6f5adc0742141"},{url:"/_next/static/chunks/app/(auth)/login/page-c8c95dba39878d46.js",revision:"c8c95dba39878d46"},{url:"/_next/static/chunks/app/(auth)/onboarding/page-f7f3f2aa5aacd56d.js",revision:"f7f3f2aa5aacd56d"},{url:"/_next/static/chunks/app/(auth)/register/page-517f6e348b031bbc.js",revision:"517f6e348b031bbc"},{url:"/_next/static/chunks/app/(auth)/reset-password/page-dd8f7982e89af661.js",revision:"dd8f7982e89af661"},{url:"/_next/static/chunks/app/_not-found/page-95f11f5fe94340f1.js",revision:"95f11f5fe94340f1"},{url:"/_next/static/chunks/app/ai-assistant/page-c5d5fa03a029471e.js",revision:"c5d5fa03a029471e"},{url:"/_next/static/chunks/app/analytics/advanced/page-23e741d27cd10a0b.js",revision:"23e741d27cd10a0b"},{url:"/_next/static/chunks/app/analytics/page-8dadcf7c73e51f1d.js",revision:"8dadcf7c73e51f1d"},{url:"/_next/static/chunks/app/api/ai/chat/route-a631d97a33877f8a.js",revision:"a631d97a33877f8a"},{url:"/_next/static/chunks/app/api/auth/login/route-a631d97a33877f8a.js",revision:"a631d97a33877f8a"},{url:"/_next/static/chunks/app/api/auth/password-reset/route-a631d97a33877f8a.js",revision:"a631d97a33877f8a"},{url:"/_next/static/chunks/app/api/auth/register/route-a631d97a33877f8a.js",revision:"a631d97a33877f8a"},{url:"/_next/static/chunks/app/api/health/route-a631d97a33877f8a.js",revision:"a631d97a33877f8a"},{url:"/_next/static/chunks/app/api/tracking/feeding/route-a631d97a33877f8a.js",revision:"a631d97a33877f8a"},{url:"/_next/static/chunks/app/api/voice/transcribe/route-a631d97a33877f8a.js",revision:"a631d97a33877f8a"},{url:"/_next/static/chunks/app/children/page-02356cae972e2f08.js",revision:"02356cae972e2f08"},{url:"/_next/static/chunks/app/family/page-7757552688d71a0d.js",revision:"7757552688d71a0d"},{url:"/_next/static/chunks/app/history/page-8acf5da9bc57eb08.js",revision:"8acf5da9bc57eb08"},{url:"/_next/static/chunks/app/insights/page-c28e0ca0571b3133.js",revision:"c28e0ca0571b3133"},{url:"/_next/static/chunks/app/layout-5b9ea35002e7f082.js",revision:"5b9ea35002e7f082"},{url:"/_next/static/chunks/app/legal/cookies/page-d306fae299dcaa8d.js",revision:"d306fae299dcaa8d"},{url:"/_next/static/chunks/app/legal/eula/page-df0c2d6dfe66207d.js",revision:"df0c2d6dfe66207d"},{url:"/_next/static/chunks/app/legal/page-fd2f291410338661.js",revision:"fd2f291410338661"},{url:"/_next/static/chunks/app/legal/privacy/page-3571b073a1369e09.js",revision:"3571b073a1369e09"},{url:"/_next/static/chunks/app/legal/terms/page-b6f8f8f978ddd26f.js",revision:"b6f8f8f978ddd26f"},{url:"/_next/static/chunks/app/logout/page-73ff2e709702f808.js",revision:"73ff2e709702f808"},{url:"/_next/static/chunks/app/offline/page-b4f952b7b4c4bdc7.js",revision:"b4f952b7b4c4bdc7"},{url:"/_next/static/chunks/app/page-8070333e141ee91f.js",revision:"8070333e141ee91f"},{url:"/_next/static/chunks/app/settings/page-80ca87f4c25a4ee6.js",revision:"80ca87f4c25a4ee6"},{url:"/_next/static/chunks/app/track/activity/page-6d9d1b49f0ba2c7e.js",revision:"6d9d1b49f0ba2c7e"},{url:"/_next/static/chunks/app/track/diaper/page-f3d0ddc9995042cd.js",revision:"f3d0ddc9995042cd"},{url:"/_next/static/chunks/app/track/feeding/page-e7d7bbfca27e7d84.js",revision:"e7d7bbfca27e7d84"},{url:"/_next/static/chunks/app/track/growth/page-15aadf71b9fe6819.js",revision:"15aadf71b9fe6819"},{url:"/_next/static/chunks/app/track/medicine/page-144d695b30772f7a.js",revision:"144d695b30772f7a"},{url:"/_next/static/chunks/app/track/page-b5e4a39548d3e8a3.js",revision:"b5e4a39548d3e8a3"},{url:"/_next/static/chunks/app/track/sleep/page-be5c7a1126387120.js",revision:"be5c7a1126387120"},{url:"/_next/static/chunks/bc98253f.2a96f718cf128d0e.js",revision:"2a96f718cf128d0e"},{url:"/_next/static/chunks/framework-bd61ec64032c2de7.js",revision:"bd61ec64032c2de7"},{url:"/_next/static/chunks/main-520e5ec2d671abe7.js",revision:"520e5ec2d671abe7"},{url:"/_next/static/chunks/main-app-02fc3649960ba6c7.js",revision:"02fc3649960ba6c7"},{url:"/_next/static/chunks/pages/_app-4b3fb5e477a0267f.js",revision:"4b3fb5e477a0267f"},{url:"/_next/static/chunks/pages/_error-c970d8b55ace1b48.js",revision:"c970d8b55ace1b48"},{url:"/_next/static/chunks/polyfills-42372ed130431b0a.js",revision:"846118c33b2c0e922d7b3a7676f81f6f"},{url:"/_next/static/chunks/webpack-d2fb589b644c099b.js",revision:"d2fb589b644c099b"},{url:"/_next/static/css/dd1dff55aa5f7521.css",revision:"dd1dff55aa5f7521"},{url:"/_next/static/jQkbbA7-fKSC_UOSM5hXL/_buildManifest.js",revision:"673df67655213af81147283455f8956d"},{url:"/_next/static/jQkbbA7-fKSC_UOSM5hXL/_ssgManifest.js",revision:"b6652df95db52feb4daf4eca35380933"},{url:"/_next/static/media/19cfc7226ec3afaa-s.woff2",revision:"9dda5cfc9a46f256d0e131bb535e46f8"},{url:"/_next/static/media/21350d82a1f187e9-s.woff2",revision:"4e2553027f1d60eff32898367dd4d541"},{url:"/_next/static/media/8e9860b6e62d6359-s.woff2",revision:"01ba6c2a184b8cba08b0d57167664d75"},{url:"/_next/static/media/ba9851c3c22cd980-s.woff2",revision:"9e494903d6b0ffec1a1e14d34427d44d"},{url:"/_next/static/media/c5fe6dc8356a8c31-s.woff2",revision:"027a89e9ab733a145db70f09b8a18b42"},{url:"/_next/static/media/df0a9ae256c0569c-s.woff2",revision:"d54db44de5ccb18886ece2fda72bdfe0"},{url:"/_next/static/media/e4af272ccee01ff0-s.p.woff2",revision:"65850a373e258f1c897a2b3d75eb74de"},{url:"/apple-touch-icon.png",revision:"fa2d4d791b90148a18d49bc3bfd7a43a"},{url:"/check-updates.js",revision:"bc016a0ceb6c72a5fe9ba02ad05d78be"},{url:"/favicon-16x16.png",revision:"db2da3355c89a6149f6d9ee35ebe6bf3"},{url:"/favicon-32x32.png",revision:"0fd88d56aa584bd0546d05ffc63ef777"},{url:"/icon-192x192.png",revision:"b8ef7f117472c4399cceffea644eb8bd"},{url:"/icons/icon-128x128.png",revision:"96cff3b189d9c1daa1edf470290a90cd"},{url:"/icons/icon-144x144.png",revision:"b627c346c431d7e306005aec5f51baff"},{url:"/icons/icon-152x152.png",revision:"012071830c13d310e51f833baed531af"},{url:"/icons/icon-192x192.png",revision:"dfb20132ddb628237eccd4b0e2ee4aaa"},{url:"/icons/icon-384x384.png",revision:"d032b25376232878a2a29b5688992a8d"},{url:"/icons/icon-512x512.png",revision:"ffda0043571d60956f4e321cba706670"},{url:"/icons/icon-72x72.png",revision:"cc89e74126e7e1109f0186774b3c0d77"},{url:"/icons/icon-96x96.png",revision:"32813cdad5b636fc09eec01c7d705936"},{url:"/manifest.json",revision:"5cbf1ecd33b05c4772688ce7d00c2c23"},{url:"/next.svg",revision:"8e061864f388b47f33a1c3780831193e"},{url:"/push-sw.js",revision:"45385b2ab1bb9d8db17e3707d4364890"},{url:"/vercel.svg",revision:"61c6b19abff40ea7acd577be818f3976"}],{ignoreURLParametersMatching:[]}),e.cleanupOutdatedCaches(),e.registerRoute("/",new e.NetworkFirst({cacheName:"start-url",plugins:[{cacheWillUpdate:async({request:e,response:a,event:s,state:c})=>a&&"opaqueredirect"===a.type?new Response(a.body,{status:200,statusText:"OK",headers:a.headers}):a}]}),"GET"),e.registerRoute(/^https:\/\/fonts\.(?:gstatic)\.com\/.*/i,new e.CacheFirst({cacheName:"google-fonts-webfonts",plugins:[new e.ExpirationPlugin({maxEntries:4,maxAgeSeconds:31536e3})]}),"GET"),e.registerRoute(/^https:\/\/fonts\.(?:googleapis)\.com\/.*/i,new e.StaleWhileRevalidate({cacheName:"google-fonts-stylesheets",plugins:[new e.ExpirationPlugin({maxEntries:4,maxAgeSeconds:604800})]}),"GET"),e.registerRoute(/\.(?:eot|otf|ttc|ttf|woff|woff2|font.css)$/i,new e.StaleWhileRevalidate({cacheName:"static-font-assets",plugins:[new e.ExpirationPlugin({maxEntries:4,maxAgeSeconds:604800})]}),"GET"),e.registerRoute(/\.(?:jpg|jpeg|gif|png|svg|ico|webp)$/i,new e.StaleWhileRevalidate({cacheName:"static-image-assets",plugins:[new e.ExpirationPlugin({maxEntries:64,maxAgeSeconds:86400})]}),"GET"),e.registerRoute(/\/_next\/image\?url=.+$/i,new e.StaleWhileRevalidate({cacheName:"next-image",plugins:[new e.ExpirationPlugin({maxEntries:64,maxAgeSeconds:86400})]}),"GET"),e.registerRoute(/\.(?:mp3|wav|ogg)$/i,new e.CacheFirst({cacheName:"static-audio-assets",plugins:[new e.RangeRequestsPlugin,new e.ExpirationPlugin({maxEntries:32,maxAgeSeconds:86400})]}),"GET"),e.registerRoute(/\.(?:mp4)$/i,new e.CacheFirst({cacheName:"static-video-assets",plugins:[new e.RangeRequestsPlugin,new e.ExpirationPlugin({maxEntries:32,maxAgeSeconds:86400})]}),"GET"),e.registerRoute(/\.(?:js)$/i,new e.StaleWhileRevalidate({cacheName:"static-js-assets",plugins:[new e.ExpirationPlugin({maxEntries:32,maxAgeSeconds:86400})]}),"GET"),e.registerRoute(/\.(?:css|less)$/i,new e.StaleWhileRevalidate({cacheName:"static-style-assets",plugins:[new e.ExpirationPlugin({maxEntries:32,maxAgeSeconds:86400})]}),"GET"),e.registerRoute(/\/_next\/data\/.+\/.+\.json$/i,new e.StaleWhileRevalidate({cacheName:"next-data",plugins:[new e.ExpirationPlugin({maxEntries:32,maxAgeSeconds:86400})]}),"GET"),e.registerRoute(/\/api\/.*$/i,new e.NetworkFirst({cacheName:"apis",networkTimeoutSeconds:10,plugins:[new e.ExpirationPlugin({maxEntries:16,maxAgeSeconds:86400})]}),"GET"),e.registerRoute(/.*/i,new e.NetworkFirst({cacheName:"others",networkTimeoutSeconds:10,plugins:[new e.ExpirationPlugin({maxEntries:32,maxAgeSeconds:86400})]}),"GET")});
|