[{"data":1,"prerenderedAt":25},["ShallowReactive",2],{"blog-posts":3},[4,15],{"title":5,"path":6,"description":7,"summary":8,"date":9,"tags":10,"draft":14},"How I built a mini cache engine (Part 1)","\u002Fblog\u002F2026\u002Fhow-i-built-a-mini-cache-engine","Part 1 of how I built a cache layer for an SSR Nuxt app, covering content that is the same for every user.","Every visit to an SSR page can end up hitting your backend, even when nothing has changed (not fun). This is part one of how I built a small cache layer in front of it, starting with content that looks the same for everyone. Part two covers logged in users.","2026-09-18",[11,12,13],"nuxt","nitro","caching",false,{"title":16,"path":17,"description":18,"summary":19,"date":20,"tags":21,"draft":14},"Styling the details tag with Tailwind and Vue","\u002Fblog\u002F2022\u002Fstyling-the-details-tag-with-tailwind-and-vue","The default \u003Cdetails> styling is ugly enough that most people reach for divs and state management instead. Here is how to make it look good with Tailwind and a small Vue component.","The default \u003Cdetails> tag is pretty ugly, so most of us give up on it and rebuild it with divs and some state instead (I did too). Here's how I made the real thing look good with Tailwind and a small Vue component.","2022-08-17",[22,23,24],"vue","tailwindcss","css",1789778979013]