[{"data":1,"prerenderedAt":76},["ShallowReactive",2],{"portfolio:social-links":3,"posts:nuxt-migration-notes":20},[4,8,12,16],{"id":5,"platform":5,"url":6,"label":7},"github","https:\u002F\u002Fgithub.com\u002Fpiioni","GitHub",{"id":9,"platform":9,"url":10,"label":11},"linkedin","https:\u002F\u002Fwww.linkedin.com\u002Fin\u002Fjuan-rangel-002294300\u002F?locale=en_US","LinkedIn",{"id":13,"platform":13,"url":14,"label":15},"twitter","https:\u002F\u002Ftwitter.com\u002FJuann936","Twitter",{"id":17,"platform":17,"url":18,"label":19},"email","mailto:piioni.unwell796@slmail.me","Email",{"id":21,"title":22,"body":23,"description":61,"draft":62,"extension":63,"meta":64,"navigation":65,"path":66,"publishedAt":67,"seo":68,"slug":69,"stem":70,"tags":71,"__hash__":75},"posts\u002Fposts\u002Fnuxt-migration-notes.md","Migrating My Portfolio from React to Nuxt 4",{"type":24,"value":25,"toc":55},"minimark",[26,30,35,48,52],[27,28,29],"p",{},"The migration was not just a framework swap. It was an opportunity to redesign the frontend with better boundaries.",[31,32,34],"h2",{"id":33},"what-improved","What improved",[36,37,38,42,45],"ul",{},[39,40,41],"li",{},"Content moved to markdown with typed collections",[39,43,44],{},"Repeated UI patterns extracted into base components",[39,46,47],{},"Home page structured as independent sections",[31,49,51],{"id":50},"why-this-matters","Why this matters",[27,53,54],{},"A portfolio tends to grow over time. If structure is weak, every new section adds chaos.",{"title":56,"searchDepth":57,"depth":57,"links":58},"",2,[59,60],{"id":33,"depth":57,"text":34},{"id":50,"depth":57,"text":51},"What changed while moving from a client-only React app to a content-driven Nuxt architecture.",false,"md",{},true,"\u002Fposts\u002Fnuxt-migration-notes","2026-04-20",{"title":22,"description":61},"nuxt-migration-notes","posts\u002Fnuxt-migration-notes",[72,73,74],"Nuxt","Architecture","Frontend","0GfuCzIwXTHi1fmqXjpZ77eky1CR1jHTbiQIs40gfaU",1777398847614]