[{"data":1,"prerenderedAt":233},["ShallowReactive",2],{"navigation":3,"\u002Fprojects\u002Fdlta":54,"\u002Fprojects\u002Fdlta-surround":228},[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":14,"body":56,"category":209,"date":210,"description":211,"draft":53,"extension":212,"featured":213,"image":214,"meta":215,"navigation":213,"path":15,"repo":216,"role":217,"seo":218,"status":219,"stem":16,"tags":220,"url":226,"__hash__":227},"projects\u002Fprojects\u002Fdlta.md",{"type":57,"value":58,"toc":200},"minimark",[59,64,68,71,75,88,92,119,123,171,175,182,188,194],[60,61,63],"h2",{"id":62},"overview","Overview",[65,66,67],"p",{},"DLTA is GROW Inc's administration platform for Australian superannuation funds — member data, case and process workflows, and compliance. I spent six years on this product, from hiring onto the Vue front end through team leadership and senior IC work on platform and developer experience.",[65,69,70],{},"Public details stay high-level: this is an internal SaaS product. Imagery below combines GROW's public marketing site with product UI concepts designed by Ed Yao.",[60,72,74],{"id":73},"my-role","My role",[76,77,78,82,85],"ul",{},[79,80,81],"li",{},"Front-end Engineer → Senior SWE → Engineering Team Lead → Senior IC (2020–2026)",[79,83,84],{},"Owned large parts of the SPA architecture, authorisation UX, paved paths, and reliability work",[79,86,87],{},"Mentored peers and acted as go-to engineer for permissions and front-end architecture",[60,89,91],{"id":90},"stack","Stack",[76,93,94,101,107,113],{},[79,95,96,100],{},[97,98,99],"strong",{},"Front end:"," Vue.js SPA (Vue 2 → Vue 3), S3 + CloudFront delivery",[79,102,103,106],{},[97,104,105],{},"Services:"," Spring Boot APIs, process workers on SQS → ECS, MongoDB workflow services",[79,108,109,112],{},[97,110,111],{},"Auth:"," Custom service-manager permissions (node \u002F fund \u002F product)",[79,114,115,118],{},[97,116,117],{},"Ops:"," AWS, Terraform, CI\u002FCD, Elastic APM, Sentry, LaunchDarkly",[60,120,122],{"id":121},"outcomes","Outcomes",[76,124,125,140,147,158,165],{},[79,126,127,128,131,132,135,136,139],{},"Authorisation payloads cut by ~",[97,129,130],{},"90%",", with ~",[97,133,134],{},"50%"," better API latency and ~",[97,137,138],{},"$150k\u002Fyr"," AWS savings",[79,141,142,143,146],{},"JSON Schema validation framework adopted by ",[97,144,145],{},"100+"," developers",[79,148,149,150,153,154,157],{},"Automated PR previews — ~",[97,151,152],{},"80%"," less manual QA setup, ",[97,155,156],{},"10+ hrs\u002Fweek"," DevOps toil saved",[79,159,160,161,164],{},"Client-side list rendering from ~",[97,162,163],{},"3–5s"," to near-instant on slower hardware",[79,166,167,168,170],{},"Enterprise Vue 2 → Vue 3 migration; SQS deduplication via PostgreSQL locking; ",[97,169,134],{}," faster tests via automated migration testing",[60,172,174],{"id":173},"screenshots","Screenshots",[65,176,177],{},[178,179],"img",{"alt":180,"src":181},"GROW marketing site","\u002Fshots\u002Fdlta-grow-inc.webp",[65,183,184],{},[178,185],{"alt":186,"src":187},"DLTA UI concepts — Case Management (designs by Ed Yao)","\u002Fshots\u002Fdlta-figma-1.webp",[65,189,190],{},[178,191],{"alt":192,"src":193},"DLTA UI concepts — Login \u002F forms (designs by Ed Yao)","\u002Fshots\u002Fdlta-figma-2.webp",[65,195,196],{},[197,198,199],"em",{},"Product UI concepts from Figma designs by Ed Yao. Fund names and member data are omitted. High-resolution frame exports can replace these workspace thumbnails later.",{"title":201,"searchDepth":202,"depth":202,"links":203},"",2,[204,205,206,207,208],{"id":62,"depth":202,"text":63},{"id":73,"depth":202,"text":74},{"id":90,"depth":202,"text":91},{"id":121,"depth":202,"text":122},{"id":173,"depth":202,"text":174},"Work","2026","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.","md",true,"\u002Fshots\u002Fdlta.webp",{},null,"Senior Software Engineer \u002F Engineering Team Lead",{"title":14,"description":211},"Employer product (not public)",[221,222,223,224,225],"Vue","Platform","AWS","Authorisation","DX","https:\u002F\u002Fgrow.inc","PTJyUFlBKbKl98lklRBgRMJqJVxtpaXRlKQRsmPSY_s",[229,231],{"title":10,"path":11,"stem":12,"description":230,"draft":213,"children":-1},"Custom Nuxt marketing site replacing a Wix storefront for Melbourne drumstick brand Big Sound Percussion — artists roster, Shopify Buy Button, Cloudflare hosting.",{"title":18,"path":19,"stem":20,"description":232,"draft":53,"children":-1},"Private friend-group party-game phrase generator — Nuxt 4 rewrite with auth, credits, and AI image packs. Public link arrives when beta replaces production.",1789696473900]