{"id":"3910256b-378b-4538-ae17-7791be860d2d","timestamp":1793905331099,"matcher":{"static":{"/cfp/laravel-serbia":{"redirect":"/talks"},"/lwm":{"redirect":"/laravel-worldwide-meetup"},"/blog/10-efficient-and-fun-ways-to-seed-your-database":{"redirect":"https://tighten.com/insights/10-efficient-and-fun-ways-to-seed-your-database/"},"/blog/build-an-agent-friendly-cli-tool-in-php-and-run-it-anywhere-with-cpx":{"redirect":"https://tighten.com/insights/build-an-agent-friendly-cli-tool-in-php-and-run-it-anywhere-with-cpx/"},"/blog/build-an-ai-powered-drawing-guessing-game-with-laravel-prism-and-html-canvas":{"redirect":"https://tighten.com/insights/build-an-ai-powered-drawing-guessing-game-with-laravel-prism-and-html-canvas/"},"/blog/build-private-self-hosted-ai-applications-with-ollama-and-laravel":{"redirect":"https://tighten.com/insights/build-private-self-hosted-ai-applications-with-ollama-and-laravel/"},"/blog/build-your-own-ai-powered-slack-bot-with-the-laravel-ai-sdk":{"redirect":"https://tighten.com/insights/build-your-own-ai-powered-slack-bot-with-the-laravel-ai-sdk/"},"/blog/chat-with-your-documents-a-practical-guide-to-rag-using-the-new-laravel-ai-sdk":{"redirect":"https://tighten.com/insights/chat-with-your-documents-a-practical-guide-to-rag-using-the-new-laravel-ai-sdk/"},"/blog/filament-crash-course-create-a-customizable-admin-panel-in-minutes":{"redirect":"https://tighten.com/insights/filament-crash-course-create-a-customizable-admin-panel-in-minutes/"},"/blog/five-practical-tips-to-improve-search-in-laravel-apps-with-typesense":{"redirect":"https://tighten.com/insights/five-practical-tips-to-improve-search-in-laravel-apps-with-typesense"},"/blog/form-validation-with-type-inference-made-easy-with-zod-the-best-sidekick-for-typescript":{"redirect":"https://tighten.com/insights/form-validation-with-type-inference-made-easy-with-zod-the-best-sidekick-for-typescript/"},"/blog/from-mysql-to-typesense-blazing-fast-full-text-search-in-laravel":{"redirect":"https://tighten.com/insights/blazing-fast-full-text-search-in-laravel-from-mysql-to-typesense/"},"/blog/how-to-automatically-generate-dynamic-opengraph-images-for-all-your-site-pages":{"redirect":"https://tighten.com/insights/how-to-automatically-generate-dynamic-opengraph-images-for-all-your-site-pages/"},"/blog/husky-how-to-automatically-format-lint-and-test-before-you-commit-or-push":{"redirect":"https://tighten.com/insights/husky-how-to-automatically-format-lint-and-test-before-you-commit-or-push/"},"/blog/i-broke-production-what-now":{"redirect":"https://tighten.com/insights/i-broke-production-what-now/"},"/blog/new-ish-vanilla-javascript-features-you-might-have-missed":{"redirect":"https://tighten.com/insights/new-ish-vanilla-javascript-features-you-might-have-missed/"},"/blog/nuxt-superpowers-for-your-vue-3-application":{"redirect":"https://tighten.com/insights/nuxt-superpowers-for-your-vue-3-application/"},"/blog/run-ai-in-the-browser-a-practical-guide-to-transformers-js":{"redirect":"https://tighten.com/insights/run-ai-in-the-browser-a-practical-guide-to-transformers-js/"},"/blog/sql-generated-columns-and-views-how-to-use-them-in-your-laravel-app":{"redirect":"https://tighten.com/insights/sql-generated-columns-and-views-how-to-use-them-in-your-laravel-app/"},"/blog/state-management-in-vue-3-why-you-should-try-out-pinia":{"redirect":"https://tighten.com/insights/state-management-in-vue-3-why-you-should-try-out-pinia/"},"/blog/use-htmx-to-create-laravel-single-page-apps-without-writing-javascript":{"redirect":"https://tighten.com/insights/use-htmx-to-create-laravel-single-page-apps-without-writing-javascript/"},"/blog/web-workers-a-second-thread-for-your-javascript":{"redirect":"https://tighten.com/insights/web-workers-a-second-thread-for-your-javascript/"},"/__nuxt_content/pages/sql_dump.txt":{"prerender":true},"/__nuxt_content/blog/sql_dump.txt":{"prerender":true},"/__nuxt_content/jobs/sql_dump.txt":{"prerender":true},"/__nuxt_content/cfpIntros/sql_dump.txt":{"prerender":true},"/__nuxt_content/cfpEvents/sql_dump.txt":{"prerender":true},"/__nuxt_content/cfpProposals/sql_dump.txt":{"prerender":true},"/__nuxt_content/topics/sql_dump.txt":{"prerender":true},"/__nuxt_content/talks/sql_dump.txt":{"prerender":true}},"wildcard":{},"dynamic":{}},"prerendered":["/cfp/laravel-live-uk","/cfp/laravel-live-denmark","/cfp/zurich-js","/cfp/frontend-nation","/cfp/laracon-au","/cfp/laravelday","/cfp/laravelday-it","/cfp/vueverse","/cfp/laravel-worldwide-meetup","/cfp/phptek","/","/vue-sri-lanka","/vueverse","/laravel-serbia","/laravel-worldwide-meetup","/madvue","/blog","/about-me","/contact","/talks","/blog/build-command-line-tools-in-typescript-a-step-by-step-guide","/blog/advanced-agentic-workflows-with-stacked-skills","/blog/climail-the-email-client-for-your-agent","/blog/skills-i-know-kung-fu","/blog/did-webmasters-go-extinct","/blog/real-time-vue-apps-part-3-webrtc-and-peerjs","/blog/vue-vapor-goodbye-virtual-dom","/blog/real-time-vue-apps-part-2-websockets-and-real-time-databases","/blog/real-time-vue-apps-part-1-polling-and-server-sent-events","/blog/building-a-platformer-game-with-vue-and-pixijs","/blog/run-multiple-node-js-apps-on-one-server-with-pm2","/blog/automatically-deploy-your-nuxt-static-site-to-digitalocean-with-github-actions","/blog/a-step-by-step-guide-to-setting-up-permissions-on-your-linux-web-server","/frontendnation"]}