[{"data":1,"prerenderedAt":158},["ShallowReactive",2],{"navigation":3,"\u002Fprojects\u002Ffluid-grotto":54,"\u002Fprojects\u002Ffluid-grotto-surround":153},[4],{"title":5,"path":6,"stem":7,"children":8,"page":53},"Projects","\u002Fprojects","projects",[9,13,17,21,25,29,33,37,41,45,49],{"title":10,"path":11,"stem":12},"BSP website rebuild","\u002Fprojects\u002Fbsp-rebuild","projects\u002Fbsp-rebuild",{"title":14,"path":15,"stem":16},"DLTA — Super administration platform","\u002Fprojects\u002Fdlta","projects\u002Fdlta",{"title":18,"path":19,"stem":20},"Fluid Grotto","\u002Fprojects\u002Ffluid-grotto","projects\u002Ffluid-grotto",{"title":22,"path":23,"stem":24},"GOODGEAR","\u002Fprojects\u002Fgoodgear-dj","projects\u002Fgoodgear-dj",{"title":26,"path":27,"stem":28},"Goodger.dev — Website audit workflow","\u002Fprojects\u002Fgoodger-dev-audit","projects\u002Fgoodger-dev-audit",{"title":30,"path":31,"stem":32},"Laneway Studio","\u002Fprojects\u002Flaneway-studio","projects\u002Flaneway-studio",{"title":34,"path":35,"stem":36},"LuckPerms Web v3","\u002Fprojects\u002Fluckperms-web-v3","projects\u002Fluckperms-web-v3",{"title":38,"path":39,"stem":40},"Morpheus","\u002Fprojects\u002Fmorpheus","projects\u002Fmorpheus",{"title":42,"path":43,"stem":44},"School's Out — Shopify performance","\u002Fprojects\u002Fschools-out-shopify-performance","projects\u002Fschools-out-shopify-performance",{"title":46,"path":47,"stem":48},"Syscraft wiki","\u002Fprojects\u002Fsyscraft-wiki","projects\u002Fsyscraft-wiki",{"title":50,"path":51,"stem":52},"tailz.dev","\u002Fprojects\u002Ftailz-dev","projects\u002Ftailz-dev",false,{"id":55,"title":18,"body":56,"category":136,"date":137,"description":138,"draft":53,"extension":139,"featured":53,"image":126,"meta":140,"navigation":141,"path":19,"repo":142,"role":143,"seo":144,"status":145,"stem":20,"tags":146,"url":142,"__hash__":152},"projects\u002Fprojects\u002Ffluid-grotto.md",{"type":57,"value":58,"toc":127},"minimark",[59,64,68,72,75,79,96,100,116,120],[60,61,63],"h2",{"id":62},"overview","Overview",[65,66,67],"p",{},"Fluid Grotto is a long-running side project (since 2019): a phrase generator for a private friend-group party game. The original SPA is being replaced by a Nuxt 4 PWA with accounts, credit packs for AI images, a library, and admin tools. A public URL will be linked here once the beta is pushed to production — the legacy site is intentionally not linked.",[60,69,71],{"id":70},"my-role","My role",[65,73,74],{},"Sole developer of both the legacy app and the Nuxt rewrite.",[60,76,78],{"id":77},"stack","Stack",[80,81,82,90,93],"ul",{},[83,84,85,86],"li",{},"Nuxt 4, Nuxt UI, TypeScript, Vitest, ",[87,88,89],"code",{},"@vite-pwa\u002Fnuxt",[83,91,92],{},"Cloudflare Pages + D1 + R2; Better Auth (Google + email\u002Fpassword)",[83,94,95],{},"Stripe credit packs; OpenRouter image generation; Resend for mail",[60,97,99],{"id":98},"outcomes","Outcomes",[80,101,102,105,108],{},[83,103,104],{},"Beta shipped Aug 2026: auth, credits, library, suggestions, admin",[83,106,107],{},"Mixer remains free; AI images gated by login + credits",[83,109,110,111,115],{},"Future: extract open-source ",[112,113,114],"strong",{},"Phraser","; archive legacy API",[60,117,119],{"id":118},"screenshots","Screenshots",[65,121,122],{},[123,124],"img",{"alt":125,"src":126},"Fluid Grotto beta","\u002Fshots\u002Ffluid-grotto.webp",{"title":128,"searchDepth":129,"depth":129,"links":130},"",2,[131,132,133,134,135],{"id":62,"depth":129,"text":63},{"id":70,"depth":129,"text":71},{"id":77,"depth":129,"text":78},{"id":98,"depth":129,"text":99},{"id":118,"depth":129,"text":119},"Personal","2026","Private friend-group party-game phrase generator — Nuxt 4 rewrite with auth, credits, and AI image packs. Public link arrives when beta replaces production.","md",{},true,null,"Sole developer",{"title":18,"description":138},"Beta — prod cutover pending",[147,148,149,150,151],"Nuxt","PWA","Better Auth","Stripe","Cloudflare","9QnBech_KDolek8ctD6mHSNW5jEgSNCM10-_39_WNHA",[154,156],{"title":14,"path":15,"stem":16,"description":155,"draft":53,"children":-1},"Front-end and platform engineering on GROW's SaaS admin platform for Australian superannuation funds — authorisation, DX, Vue 2→3, and reliability at ~1M-member scale.",{"title":22,"path":23,"stem":24,"description":157,"draft":53,"children":-1},"Promo site for my DJ project — mixes, press kit, bookings, SoundCloud stats at build, and a Web Audio waveform hero.",1789696474444]