[{"data":1,"prerenderedAt":487},["ShallowReactive",2],{"page-home":3,"site-settings":76,"home-projects":141,"home-articles":380},{"hero":4,"stats":15,"currentlyLabel":22,"currently":23,"projects":38,"writing":42,"newsletter":48,"tools":55,"community":59,"seo":71},{"badge":5,"h1":6,"h1Accent":7,"tagline":8,"subcopy":9,"ctaPrimaryLabel":10,"ctaPrimaryUrl":11,"ctaSecondaryLabel":12,"ctaSecondaryUrl":13,"versionStamp":14},"Building in public","Serious software,","built out loud.","A product-led lab. Production-grade platforms. A few client builds a year.","We build our own platforms — Sonic Artistes, Castora — in the open. A few times a year we bring that same craft to a client's build. Real software, shipped at product-team pace, shared honestly.","Explore the projects","#projects","Visit the writing","#buildlog","v. 2026.04 · build 0422",{"platformsLabel":16,"claudeValue":17,"claudeUnit":18,"claudeLabel":19,"scarcityWord":20,"scarcityLabel":21},"Platforms in\nproduction","100","%","Built with\nClaude Code","3","Client builds\na year","Currently",[24,29,33],{"icon":25,"label":26,"valueLead":27,"valueTrail":28},"building","Building","Castora","",{"icon":30,"label":31,"valueLead":32,"valueTrail":28},"reading","Reading","A Philosophy of Software Design",{"icon":34,"label":35,"valueLead":36,"valueTrail":37},"listening","Listening","Nils Frahm","All Melody",{"eyebrow":39,"h2Line1":40,"h2Line2":41},"What's being built","Real projects.","Real complexity.",{"eyebrow":43,"h2Line1":44,"h2Line2":45,"ctaLabel":46,"ctaUrl":47},"Recent writing","No filters.","No highlights reel.","All writing →","\u002Fblog",{"heading":49,"subcopy":50,"placeholder":51,"buttonLabel":52,"submittedLabel":53,"note":54},"Or get it in your inbox.","One email, Sundays. The week's decisions and the reasoning behind them. No promos, ever.","you@domain.com","Subscribe","✓ Subscribed","~850 subscribers · unsubscribe anytime",{"eyebrow":56,"h2Line1":57,"h2Line2":58},"Free tools","Useful by name,","useful by nature.",{"eyebrow":60,"h2":61,"lead":62,"perks":63,"note":68,"ctaLabel":69,"ctaUrl":70},"The Hub","Come build alongside.","Join the community where the real conversations happen — schema decisions, stack debates, wins, wipeouts and everything in between.",[64,65,66,67],"Full access to the build log and project updates","Ask questions, share your own builds","Deep-dive threads on Nuxt, Supabase and Claude Code","Early access to tools and resources","No credit card · no spam · leave anytime","Join the Hub — it's free","https:\u002F\u002Fcommunity.usefullabs.io",{"title":72,"description":73,"ogImage":74,"noindex":75},"Serious software, built out loud.","A product-led lab building production-grade platforms in the open — Sonic Artistes, Castora and more. A few times a year we take that same craft to a client build. Real software, shipped at product-team pace, shared honestly.",null,false,{"global":77,"header":80,"footer":93},{"brandName":78,"brandStamp":79,"brandTagline":72,"communityUrl":70,"defaultSeoDescription":73,"defaultOgImage":74},"Useful Labs","est. 2025 · UK",{"navLinks":81,"scarcityPulse":74,"showClock":91,"ctaLabel":92,"ctaUrl":70},[82,85,87,90],{"label":83,"url":84,"external":75},"Projects","\u002Fprojects",{"label":86,"url":47,"external":75},"Writing",{"label":88,"url":89,"external":75},"Tools","\u002Ftools",{"label":60,"url":70,"external":91},true,"Join the community",{"tagline":72,"aboutParagraph":94,"copyrightLine":95,"columns":96,"legalLinks":128},"A UK product lab, built in the open. Real production software, documented honestly — no hype, no highlights reel.","© Useful Labs {year} · Made in the UK with unusual patience.",[97,106,115],{"heading":83,"links":98},[99,102,104],{"label":100,"url":101,"external":91},"Sonic Artistes","https:\u002F\u002Fapp.sonicartistes.com",{"label":27,"url":103,"external":91},"https:\u002F\u002Fgetcastora.com",{"label":105,"url":84,"external":75},"Archive",{"heading":86,"links":107},[108,109,112],{"label":86,"url":47,"external":75},{"label":110,"url":111,"external":75},"RSS feed","\u002Frss.xml",{"label":113,"url":114,"external":75},"Newsletter","#newsletter",{"heading":116,"links":117},"Elsewhere",[118,119,122,125],{"label":60,"url":70,"external":91},{"label":120,"url":121,"external":91},"GitHub","https:\u002F\u002Fgithub.com\u002Fpaulwilliams-us",{"label":123,"url":124,"external":91},"X \u002F Twitter","https:\u002F\u002Fx.com",{"label":126,"url":127,"external":75},"Email","mailto:hello@usefullabs.io",[129,132,135,138],{"label":130,"url":131,"external":75},"Privacy","\u002Fprivacy",{"label":133,"url":134,"external":75},"Terms","\u002Fterms",{"label":136,"url":137,"external":75},"AI Policy","\u002Fai-policy",{"label":139,"url":140,"external":75},"Colophon","\u002Fcolophon",[142,162,184,221,264,314,354,368],{"id":143,"slug":143,"name":144,"idLabel":145,"tagText":26,"description":146,"accent":147,"meta":150,"modules":151,"chips":152,"progress":154,"followLabel":157,"followHref":158,"siteUrl":74,"siteLabel":159,"status":25,"isFeatured":75,"isHeroFeatured":75,"publishedIso":160,"modifiedIso":161,"hero":-1},"redactlog","RedactLog","05 \u002F RL","Multi-tenant, GDPR-focused PDF redaction tool for Subject Access Request (SAR) workflows. Built on Next.js 15, TypeScript, Tailwind v4, and shadcn\u002Fui, with a FastAPI sidecar handling PDF processing via PyMuPDF. Covers the full SAR lifecycle: case management, document upload, a canvas-based redaction editor, approval workflow, and final export as redacted PDFs, CSV schedule, and ZIP pack.",{"token":148,"rgb":149},"neutral","148, 163, 184",[],[],[153],"Next.js",{"label":155,"percent":156},"Build progress",60,"Follow the build","\u002Fprojects\u002Fredactlog","redactlog.com","2026-05-15T16:19:36","2026-05-15T16:28:43",{"id":163,"slug":163,"name":164,"idLabel":165,"tagText":166,"description":167,"accent":168,"meta":171,"modules":172,"chips":176,"progress":177,"followLabel":157,"followHref":179,"siteUrl":180,"siteLabel":181,"status":25,"isFeatured":75,"isHeroFeatured":75,"publishedIso":182,"modifiedIso":183,"hero":-1},"sonic-artistes-website","Sonic Artistes Website","02 \u002F SAW","Staging live","The next-generation Sonic Artistes public website — Astro 6, dark-first design system, Directus CMS, deployed to Cloudflare Pages. Every content collection is editor-managed through a Directus→Markdown sync pipeline.",{"token":169,"rgb":170},"accent","6, 182, 212",[],[173,174,175],"Astro.js","Directus","Wasabi",[],{"label":155,"percent":178},96,"\u002Fprojects\u002Fsonic-artistes-website","https:\u002F\u002Fstaging.sonicartistes.com","sonicartistes.com","2026-05-26T09:50:06","2026-05-31T10:32:00",{"id":185,"slug":185,"name":186,"idLabel":187,"tagText":188,"description":189,"accent":190,"meta":191,"modules":201,"chips":208,"progress":214,"followLabel":157,"followHref":216,"siteUrl":74,"siteLabel":217,"status":218,"isFeatured":91,"isHeroFeatured":75,"publishedIso":219,"modifiedIso":220,"hero":-1},"sofia-dives","Sofia Dives","06 \u002F SD","Launching soon","A storytelling and sponsorship website for Sofia, a 14-year-old elite junior diver on the Olympic pathway. Astro, TypeScript and a self-hosted Directus CMS on a bespoke Navy & Gold design system, deployed static to Cloudflare Pages. Enquiry-based with no on-site payments — every approach routes privately to her parents, and safeguarding leads every decision.",{"token":148,"rgb":149},[192,195,198],{"value":193,"label":194},"8","Pages",{"value":196,"label":197},"16","CMS models",{"value":199,"label":200},"AA","Accessible",[202,203,204,205,206,207],"Story-driven homepage","Sponsorship enquiry flow","Directus-managed content","News journal","Results table","Safeguarding-first architecture",[209,210,211,174,212,213],"Astro","TypeScript","Tailwind CSS","Cloudflare Pages","EmailIt",{"label":155,"percent":215},85,"\u002Fprojects\u002Fsofia-dives","sofiadives.co.uk","shipping","2026-06-02T15:00:05","2026-06-02T16:11:51",{"id":222,"slug":222,"name":223,"idLabel":224,"tagText":225,"description":226,"accent":227,"meta":228,"modules":238,"chips":249,"progress":256,"followLabel":157,"followHref":258,"siteUrl":259,"siteLabel":260,"status":261,"isFeatured":91,"isHeroFeatured":75,"publishedIso":262,"modifiedIso":263,"hero":-1},"multi-track-player","Multi Track Player","03 \u002F MT","Live · rebuild in progress","A professional stem player that puts the full band in a musician's hands — giving performers and rehearsal directors precise, independent control over every instrument in a track, anywhere, on any device. Now being rebuilt as Simply Playback, a multi-tenant platform serving multiple companies from one deployment.",{"token":169,"rgb":170},[229,232,235],{"value":230,"label":231},"Ready","Offline",{"value":233,"label":234},"API","Web Audio",{"value":236,"label":237},"Only","Invite",[239,240,241,242,243,244,245,246,247,248],"Independent stem control","Theme-based song library","Personal setlist builder","Secure authenticated streaming","Custom admin panel","Invite-only onboarding","Offline \u002F local mode","Role-based access control","Playback speed control","Zero-framework frontend",[250,251,252,253,254,255,212],"Vanilla JS","HTML","CSS","PocketBase","Wasabi S3","Web Audio API",{"label":155,"percent":257},100,"\u002Fprojects\u002Fmulti-track-player","https:\u002F\u002Fmultitrack.sonicartistes.com","multitrack.sonicartistes.com","live","2026-02-24T08:50:39","2026-04-24T08:41:32",{"id":265,"slug":265,"name":27,"idLabel":266,"tagText":267,"description":268,"accent":269,"meta":271,"modules":281,"chips":288,"progress":293,"followLabel":157,"followHref":295,"siteUrl":103,"siteLabel":296,"status":25,"isFeatured":91,"isHeroFeatured":91,"publishedIso":297,"modifiedIso":298,"hero":299},"castora","02 \u002F CA","92% complete · Shipping August 2026","Multi-tenant audition management platform. Async video submissions, live online and in-person scheduling, collaborative scoring, ATS, live audition rooms and reusable criteria management.",{"token":265,"rgb":270},"245, 158, 11",[272,275,278],{"value":273,"label":274},"40+","Tables",{"value":276,"label":277},"Multi","Tenant",{"value":279,"label":280},"RT","Scoring",[282,283,284,285,286,287],"Async video submissions","Live audition rooms","Collaborative scoring","Hybrid scheduling","Applicant tracking","Criteria engine",[289,290,254,291,292],"Nuxt 4","Supabase","Multi-tenant","Claude Code",{"label":155,"percent":294},94,"\u002Fprojects\u002Fcastora","getcastora.com","2026-04-23T10:51:08","2026-05-31T10:32:40",{"statusLabel":300,"statusFocus":301,"kickerLabel":302,"kickerValue":303,"description":304,"chips":305,"metrics":306},"Shipping now","live audition rooms","Featured · In progress","88%","Multi-tenant audition management platform — async video submissions, live rooms, collaborative scoring, and a reusable criteria engine.",[289,290,254,291],[307,308,311],{"value":273,"label":274},{"value":309,"label":310},"90%","Complete",{"value":312,"label":313},"Jul","Shipping",{"id":315,"slug":315,"name":316,"idLabel":317,"tagText":318,"description":319,"accent":320,"meta":321,"modules":330,"chips":346,"progress":349,"followLabel":157,"followHref":350,"siteUrl":101,"siteLabel":351,"status":261,"isFeatured":91,"isHeroFeatured":75,"publishedIso":352,"modifiedIso":353,"hero":-1},"sonic-artistes-agency-app","Sonic Artistes Agency App","01 \u002F SA","Live in production","Full-stack musician management platform for cruise line entertainment. Document compliance, scheduling, chat, repertoire management, support tickets and multi-sided portals — all in one.",{"token":169,"rgb":170},[322,325,328],{"value":323,"label":324},"15+","Modules",{"value":326,"label":327},"400+","Musicians",{"value":20,"label":329},"Portals",[331,332,333,334,335,336,337,338,339,340,341,342,343,344,345],"Multi-sided portals","Document compliance","Contracts & scheduling","Workflow automation","Realtime chat","Community Spaces","Repertoire management","Notifications engine","Email & templates","Support tickets","HR touchpoints","Analytics & reporting","DSAR \u002F GDPR module","PDF generation","The Hub integration",[347,290,210,348,292],"Nuxt 3","shadcn-vue",{"label":155,"percent":257},"\u002Fprojects\u002Fsonic-artistes-agency-app","app.sonicartistes.com","2026-04-23T10:49:28","2026-04-23T11:43:20",{"id":355,"slug":355,"name":356,"idLabel":357,"tagText":26,"description":358,"accent":359,"meta":362,"modules":363,"chips":364,"progress":365,"followLabel":157,"followHref":367,"siteUrl":74,"siteLabel":28,"status":25,"isFeatured":75,"isHeroFeatured":75,"publishedIso":28,"modifiedIso":28,"hero":-1},"simply-playback","Simply Playback","07 \u002F SP","Multi-tenant, browser-based multi-track stem player for musicians. Successor to the original Sonic Artistes stem player — now a full platform where companies issue gated stems, click and backing tracks to their players under server-side IP access control. First tenant: Sonic Artistes.",{"token":360,"rgb":361},"violet","139, 92, 246",[],[],[],{"label":155,"percent":366},35,"\u002Fprojects\u002Fsimply-playback",{"id":369,"slug":369,"name":370,"idLabel":371,"tagText":26,"description":372,"accent":373,"meta":374,"modules":375,"chips":376,"progress":377,"followLabel":157,"followHref":379,"siteUrl":74,"siteLabel":28,"status":25,"isFeatured":75,"isHeroFeatured":75,"publishedIso":28,"modifiedIso":28,"hero":-1},"guest-entertainer-hq","Guest Entertainer HQ","08 \u002F GE","Multi-tenant SaaS for entertainment companies to manage performers, shows, bookings, clients, equipment, finances and communications.",{"token":169,"rgb":170},[],[],[],{"label":155,"percent":378},15,"\u002Fprojects\u002Fguest-entertainer-hq",[381,404,430,460],{"index":382,"slug":383,"title":384,"excerpt":385,"category":386,"categorySlug":388,"tags":389,"dateLabel":393,"readingLabel":394,"readingMinutes":395,"publishedIso":396,"href":397,"isFeatured":75,"relatedProjectIds":398,"featuredImage":399},"#0004","defaults-are-decisions","Defaults are decisions","Most people never change a default. That makes the default the most powerful design decision you'll ever make — and the one most often left to chance. A short case for choosing them on purpose.",{"label":387,"tone":360},"Digital Experience","digital-experience",[390],{"name":391,"slug":392},"User Experience","ux","today","3 min read",3,"2026-06-26T15:47:41","\u002Fblog\u002Fdefaults-are-decisions",[],{"src":400,"alt":401,"width":402,"height":403},"https:\u002F\u002Foffice.usefullabs.io\u002Fassets\u002F47c8520e-8f24-41ad-ab31-6d057cdb105f","Defaults Are Decisions",1672,941,{"index":405,"slug":406,"title":407,"excerpt":408,"category":409,"categorySlug":410,"tags":411,"dateLabel":421,"readingLabel":394,"readingMinutes":395,"publishedIso":422,"href":423,"isFeatured":91,"relatedProjectIds":424,"featuredImage":425},"#0003","why-we-built-a-stem-player-in-the-browser-and-not-in-logic","Why we built a stem player in the browser (and not in Logic)","The brief was simple: let performers isolate and solo any instrument in a backing track, anywhere, on any device. The obvious answer was a DAW plugin. We went the other way — and the browser turned out to be the right call.",{"label":100,"tone":169},"sonic-artistes",[412,414,417,419],{"name":212,"slug":413},"cloudflare-pages",{"name":415,"slug":416},"Offline-First","offline-first",{"name":253,"slug":418},"pocketbase",{"name":255,"slug":420},"web-audio-api","2mo ago","2026-04-23T10:20:14","\u002Fblog\u002Fwhy-we-built-a-stem-player-in-the-browser-and-not-in-logic",[222],{"src":426,"alt":427,"width":428,"height":429},"https:\u002F\u002Foffice.usefullabs.io\u002Fassets\u002Fb45187b9-0bd7-4784-b7f3-51471b895a21","Sonic Artistes Multi-Track Player",1920,1281,{"index":431,"slug":432,"title":433,"excerpt":434,"category":435,"categorySlug":436,"tags":437,"dateLabel":450,"readingLabel":451,"readingMinutes":452,"publishedIso":453,"href":454,"isFeatured":75,"relatedProjectIds":455,"featuredImage":456},"#0002","openclaw-changed-everything-then-the-security-alarms-went-off","OpenClaw: The Agentic AI Revolution Is Here (And So Are the Security Nightmares)","You have probably seen it by now. Your Twitter feed. Your YouTube recommendations. That one person in your no-code community who will not stop talking about it. OpenClaw — the AI agent that lets you message your computer like it is a colleague and watch it actually do things. “It negotiated a £3,300 discount on […]",{"label":292,"tone":360},"claude-code",[438,441,444,447],{"name":439,"slug":440},"AI Agents","ai-agents",{"name":442,"slug":443},"Automation","automation",{"name":445,"slug":446},"MCP","mcp",{"name":448,"slug":449},"Security","security","4mo ago","16 min read",16,"2026-02-08T13:08:02","\u002Fblog\u002Fopenclaw-changed-everything-then-the-security-alarms-went-off",[],{"src":457,"alt":458,"width":428,"height":459},"https:\u002F\u002Foffice.usefullabs.io\u002Fassets\u002F7d0de0ff-ef2d-4853-b79e-d3abc3211454","OpenClaw Article 01 Featured Image",1072,{"index":461,"slug":462,"title":463,"excerpt":464,"category":465,"categorySlug":467,"tags":468,"dateLabel":477,"readingLabel":478,"readingMinutes":479,"publishedIso":480,"href":481,"isFeatured":75,"relatedProjectIds":482,"featuredImage":483},"#0001","logic-over-hype-how-to-choose-digital-tools-without-the-noise","Logic Over Hype: How to Choose Digital Tools Without the Noise","Open YouTube right now. What do you see? Likely a grid of thumbnails featuring people making shocked faces, overlaid with text that screams: “This new AI model is INSANE,” “Next.js 16 changes EVERYTHING,” or “Use this tool to become a millionaire by Tuesday.” If you are a creator, developer, or business owner, this constant barrage […]",{"label":466,"tone":148},"General","general",[469,472,475],{"name":470,"slug":471},"Developer Advice","developer-advice",{"name":473,"slug":474},"Productivity","productivity",{"name":88,"slug":476},"tools","5mo ago","7 min read",7,"2026-01-01T22:28:25","\u002Fblog\u002Flogic-over-hype-how-to-choose-digital-tools-without-the-noise",[],{"src":484,"alt":485,"width":428,"height":486},"https:\u002F\u002Foffice.usefullabs.io\u002Fassets\u002Fd36b230a-aafe-49b5-be98-8c9570cf2523","Logic Over Hype Featured Image",1047,1782519037275]