[{"data":1,"prerenderedAt":182},["ShallowReactive",2],{"blog-post-lighthouse-100":3},{"blocks":4,"summary":109,"person":114},[5,17,22,28,39,66,74,83,90],{"component":6,"data":7},"BlogPostHeader",{"slug":8,"kind":9,"title":10,"publishedAt":11,"duration":12,"author":13},"lighthouse-100","video","[Lighthouse 100 in 30 minutes]","[5 Sep 2026]","31:05",{"name":14,"role":15,"initials":16},"Michael","Fullstack developer","SW",{"component":18,"data":19},"BlogPostCover",{"cover":20},{"type":9,"title":21,"duration":12},"100 \u002F 100",{"component":23,"data":24},"BlogPostSource",{"kind":9,"source":25},{"name":26,"url":27},"YouTube","https:\u002F\u002Fwww.youtube.com\u002F",{"component":29,"data":30},"BlogPostChapter",{"id":31,"name":32,"hidden":33,"blocks":34},"intro","About the video",true,[35],{"component":36,"data":37},"BlogPostText",{"text":38},"[What the viewer will build and who the video is for.]",{"component":29,"data":40},{"id":41,"name":42,"blocks":43},"chapters","Chapters",[44],{"component":45,"data":46},"BlogPostTable",{"columns":47,"rows":50},[48,49],"Time","Chapter",[51,54,57,60,63],[52,53],"00:00","[Intro]",[55,56],"02:14","[Data model]",[58,59],"08:40","[Calendar UI]",[61,62],"15:05","[Availability API]",[64,65],"21:30","[Deploy]",{"component":29,"data":67},{"id":68,"name":69,"blocks":70},"summary","Summary",[71],{"component":36,"data":72},{"text":73},"[The key points of the video as text.]",{"component":29,"data":75},{"id":76,"name":77,"blocks":78},"code","Code from the video",[79],{"component":80,"data":81},"BlogPostCode",{"code":82},"\u002F\u002F [snippet from the video]\nexport const budget = {\n  \u002F\u002F ...\n};",{"component":84,"data":85},"BlogPostTags",{"tags":86},[87,88,89],"Lighthouse","Performance","Tutorial",{"component":91,"data":92},"BlogPostRelated",{"items":93},[94,103],{"slug":95,"kind":96,"title":97,"cover":98},"cwv-watch","tool","[cwv-watch]",{"type":99,"title":100,"command":101,"output":102},"terminal","github.com\u002F[user]\u002Fcwv-watch","uses: [user]\u002Fcwv-watch@v1","✓ LCP 1.8s · CLS 0.02 · INP 90ms",{"slug":104,"kind":9,"title":105,"cover":106},"booking-calendar-nextjs","[Booking calendar in Next.js from scratch]",{"type":9,"title":107,"duration":108},"\u003CCalendar \u002F>","24:18",{"slug":8,"kind":9,"title":10,"excerpt":110,"publishedAt":11,"duration":12,"tags":111,"cover":112,"source":113},"[What the video covers in one or two sentences.]",[87,88,89],{"type":9,"title":21,"duration":12},{"name":26,"url":27},{"name":115,"alternateNames":116,"role":119,"skills":120},"Michael Malakhov",[117,118],"Михаил Малахов","Mikhail Malakhov","Fullstack Developer",[121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,87,180,181],"JavaScript (ES6+)","TypeScript","HTML5","CSS3","Sass","Vue.js (Vue 2\u002FVue 3, Composition API)","Nuxt 3\u002F4","React","Next.js","Vue Router","Tailwind CSS","Bootstrap","SPA","SSR","MPA","SEO","Chrome DevTools","Node.js","NestJS","Express","Laravel","Rust","PostgreSQL","Redis","REST API","Docker","Nginx","CI\u002FCD","GitHub Actions","Vite","Webpack","Git","GitHub","GitLab","Figma","Redux","Vitest","Jest","Tauri","Prometheus","Storybook","Jira","Claude Code","Codex","Gemini","MCP","Atlassian Rovo","Zustand","SWR","TanStack Query","Pinia","Vuex","React Hook Form","Zod","Capacitor","GraphQL","WebSocket","Clinic.js","autocannon","GitHub Copilot","AI agents",1793309472462]