[{"data":1,"prerenderedAt":400},["ShallowReactive",2],{"navigation":3,"about-page":142,"mdc-iv401x-key":197},[4],{"title":5,"path":6,"stem":7,"children":8,"page":141},"Blog","/blog","blog",[9,13,17,21,25,29,33,37,41,45,49,53,57,61,65,69,73,77,81,85,89,93,97,101,105,109,113,117,121,125,129,133,137],{"title":10,"path":11,"stem":12},"VueJS Introducing Dynamic Layouts using the Atomic Design Principles","/blog/vuejs-introducing-dynamic-layouts-using-the-atomic-design-principles","blog/001.vuejs-introducing-dynamic-layouts-using-the-atomic-design-principles",{"title":14,"path":15,"stem":16},"Understanding JavaScript and Its Quirks","/blog/understanding-javascript-and-its-quirks","blog/002.understanding-javascript-and-its-quirks",{"title":18,"path":19,"stem":20},"Introducing Vue’s latest experimental Vapor Mode","/blog/introducing-vues-latest-experimental-vapor-mode","blog/003.introducing-vues-latest-experimental-vapor-mode",{"title":22,"path":23,"stem":24},"ECMAScript 2024 Nears Finalization","/blog/ecmascript-2024-nears-finalization","blog/004.ecmascript-2024-nears-finalization",{"title":26,"path":27,"stem":28},"UI Libraries for VueJS: Vuetify, Tailwind, and PrimeVue","/blog/ui-libraries-for-vuejs-vuetify-tailwind-and-primevue","blog/005.ui-libraries-for-vuejs-vuetify-tailwind-and-primevue",{"title":30,"path":31,"stem":32},"Micro Frontend Architecture","/blog/micro-frontend-architecture","blog/006.micro-frontend-architecture",{"title":34,"path":35,"stem":36},"Pre-rendering and Hydration in Vue.js","/blog/pre-rendering-and-hydration-in-vuejs","blog/007.pre-rendering-and-hydration-in-vuejs",{"title":38,"path":39,"stem":40},"Satori by Vercel — Dynamic Image Generation in JavaScript","/blog/satori-by-vercel-dynamic-image-generation-in-javascript","blog/008.satori-by-vercel-dynamic-image-generation-in-javascript",{"title":42,"path":43,"stem":44},"Vue.js and Progressive Web Apps (PWA) – Enhancing Web Experiences","/blog/vuejs-and-progressive-web-apps-pwa-enhancing-web-experiences","blog/009.vuejs-and-progressive-web-apps-pwa-enhancing-web-experiences",{"title":46,"path":47,"stem":48},"Moving from a Traditional Node.js CRUD API to Serverless Architecture—A Deep Dive","/blog/moving-from-a-traditional-nodejs-crud-api-to-serverless-architecturea-deep-dive","blog/010.moving-from-a-traditional-nodejs-crud-api-to-serverless-architecturea-deep-dive",{"title":50,"path":51,"stem":52},"Nuxt 3 and Serverless Edge Functions—Unlocking Performance and Scalability","/blog/nuxt-3-and-serverless-edge-functionsunlocking-performance-and-scalability","blog/011.nuxt-3-and-serverless-edge-functionsunlocking-performance-and-scalability",{"title":54,"path":55,"stem":56},"A Tribute to Asa Bain: Thank You for Everything","/blog/a-tribute-to-asa-bain-thank-you-for-everything","blog/012.a-tribute-to-asa-bain-thank-you-for-everything",{"title":58,"path":59,"stem":60},"Migrating JavaScript to TypeScript in ASP.NET MVC Projects","/blog/migrating-javascript-to-typescript-in-aspnet-mvc-projects","blog/013.migrating-javascript-to-typescript-in-aspnet-mvc-projects",{"title":62,"path":63,"stem":64},"Modernizing Classic ASP.NET MVC with Vue.js","/blog/modernizing-classic-aspnet-mvc-with-vuejs","blog/014.modernizing-classic-aspnet-mvc-with-vuejs",{"title":66,"path":67,"stem":68},"Which UI JavaScript Framework Should You Use?","/blog/which-ui-javascript-framework-should-you-use","blog/015.which-ui-javascript-framework-should-you-use",{"title":70,"path":71,"stem":72},"Vue + AI Integration Workflows: Enhancing Developer Productivity","/blog/vue-ai-integration-workflows-enhancing-developer-productivity","blog/016.vue-ai-integration-workflows-enhancing-developer-productivity",{"title":74,"path":75,"stem":76},"OpenAPI Standards & Scalar Integration for Node.js Apps","/blog/openapi-standards-scalar-integration-for-nodejs-apps","blog/017.openapi-standards-scalar-integration-for-nodejs-apps",{"title":78,"path":79,"stem":80},"Nuxt 3.17 — Data Fetching Improvements","/blog/nuxt-317-data-fetching-improvements","blog/019.nuxt-317-data-fetching-improvements",{"title":82,"path":83,"stem":84},"Subdomain-Based Multi-Tenancy in Nuxt","/blog/subdomain-based-multi-tenancy-in-nuxt","blog/020.subdomain-based-multi-tenancy-in-nuxt",{"title":86,"path":87,"stem":88},"Type-Safe Backends with TypeScript: tRPC, Zod, and Drizzle ORM","/blog/type-safe-backends-with-typescript-trpc-zod-and-drizzle-orm","blog/021.type-safe-backends-with-typescript-trpc-zod-and-drizzle-orm",{"title":90,"path":91,"stem":92},"Unit Testing Vue Applications with Vitest and Agentic AI","/blog/unit-testing-vue-applications-with-vitest-and-agentic-ai","blog/022.unit-testing-vue-applications-with-vitest-and-agentic-ai",{"title":94,"path":95,"stem":96},"Hidden Features & Lesser-Known TypeScript Gems","/blog/hidden-features-lesser-known-typescript-gems","blog/023.hidden-features-lesser-known-typescript-gems",{"title":98,"path":99,"stem":100},"Nuxt/Vercel Acquisition and Its Impact on NuxtHub Users","/blog/nuxtvercel-acquisition-and-its-impact-on-nuxthub-users","blog/024.nuxtvercel-acquisition-and-its-impact-on-nuxthub-users",{"title":102,"path":103,"stem":104},"State of Vue & Nuxt Ecosystem 2025","/blog/state-of-vue-nuxt-ecosystem-2025","blog/025.state-of-vue-nuxt-ecosystem-2025",{"title":106,"path":107,"stem":108},"Feature Adoption in TypeScript Over Time","/blog/feature-adoption-in-typescript-over-time","blog/026.feature-adoption-in-typescript-over-time",{"title":110,"path":111,"stem":112},"Migrating From WordPress to Nuxt Content & Using Nuxt Studio","/blog/migrating-from-wordpress-to-nuxt-content-using-nuxt-studio","blog/027.migrating-from-wordpress-to-nuxt-content-using-nuxt-studio",{"title":114,"path":115,"stem":116},"Strategic Topic: The “Rust-ification” of Tooling (Biome & Rolldown)","/blog/strategic-topic-the-rust-ification-of-tooling-biome-rolldown","blog/028.strategic-topic-the-rust-ification-of-tooling-biome-rolldown",{"title":118,"path":119,"stem":120},"Nuxt 4 and the Evolving Full-Stack Framework Landscape","/blog/nuxt-4-and-the-evolving-full-stack-framework-landscape","blog/029.nuxt-4-and-the-evolving-full-stack-framework-landscape",{"title":122,"path":123,"stem":124},"Bun as a JavaScript Runtime: Evaluating Readiness Beyond Node.js","/blog/bun-as-a-javascript-runtime-evaluating-readiness-beyond-nodejs","blog/030.bun-as-a-javascript-runtime-evaluating-readiness-beyond-nodejs",{"title":126,"path":127,"stem":128},"Top 10 Nuxt Modules That Supercharge Your App From Day One Introduction","/blog/top-10-nuxt-modules-that-supercharge-your-app-from-day-one-introduction","blog/031.top-10-nuxt-modules-that-supercharge-your-app-from-day-one-introduction",{"title":130,"path":131,"stem":132},"Strategic Topic: Vite+, VoidZero, and the Future of Frontend Tooling","/blog/strategic-topic-vite-voidzero-and-the-future-of-frontend-tooling","blog/032.strategic-topic-vite-voidzero-and-the-future-of-frontend-tooling",{"title":134,"path":135,"stem":136},"The Future of Time in JavaScript: Transitioning to the Native Temporal API","/blog/the-future-of-time-in-javascript-transitioning-to-the-native-temporal-api","blog/033.the-future-of-time-in-javascript-transitioning-to-the-native-temporal-api",{"title":138,"path":139,"stem":140},"Understanding Hydration Issues in Nuxt and How Nuxt Hints Helps","/blog/understanding-hydration-issues-in-nuxt-and-how-nuxt-hints-helps","blog/034.understanding-hydration-issues-in-nuxt-and-how-nuxt-hints-helps",false,{"id":143,"title":144,"body":145,"content":150,"description":146,"extension":179,"images":180,"meta":187,"navigation":188,"now":189,"path":192,"profileImage":193,"seo":194,"stem":195,"__hash__":196},"about/about.yml","About Me",{"title":144,"description":146,"profileImage":147,"content":150,"images":151,"now":170},"A bit more about my journey as a full‑stack engineer and how I build scalable, user‑centric products.",{"src":148,"alt":149},"/avatars/profile-image-2.png","Sean Erick C. Ramones","Hi, I'm **Sean Erick Ramones**, a full‑stack software engineer with over 7 years of experience building modern, performant web applications.\n\nI focus on turning complex ideas into elegant, scalable products where design consistency, performance, and developer experience all click. On the frontend I prefer **Vue 3** and **Nuxt**; on the backend **Node.js** and **FastAPI**; for data, **PostgreSQL/Supabase**; and I deploy to modern serverless/cloud platforms like **Vercel** and **Cloudflare**.\n\n### What I care about\n\n- Type‑safe code and clean architecture\n- Reusable components and design systems\n- Performance, accessibility, and DX\n- CI/CD and code review culture that scales\n\n### Selected experience\n\n- Miller Development AB — Full‑stack Software Engineer (Hybrid, 2019–Present)\n- Better Trade Off Ltd. — Software Developer (Contract, 2023–2024)\n- SCI Global Services — Full‑stack Software Developer (On-site, 2018–2019)\n\n### Beyond the code\n\n- Running and cross‑fit training\n- Watching anime; reading Japanese manga/light novels\n- Playing MOBA games (**Dota 2**) and relaxing games (**Stardew Valley**)\n- Driving and exploring new places\n- Making espresso coffee and showing my (terrible) latte art to friends/colleagues.\n\nIf you’d like to collaborate, reach me at **seancramones@gmail.com** or connect on [LinkedIn](https://www.linkedin.com/in/sean-erick-ramones-102a64192).\n",[152,155,158,161,164,167],{"src":153,"alt":154},"/about/awareness-run-2024-dumagete.jpg","Awareness Run 2024 in Dumaguete",{"src":156,"alt":157},"/about/job-agent-team-reunion-the-pub-dumaguete.jpg","Team reunion at The Pub in Dumaguete",{"src":159,"alt":160},"/about/pad-thai-from-wok-bae-dumaguete.jpg","Pad Thai at Wok Bae in Dumaguete",{"src":162,"alt":163},"/about/sipalay-beach-negros-occidental.jpg","Sipalay beach in Negros Occidental",{"src":165,"alt":166},"/about/casaroro-falls-valencia-negros-oriental.jpg","Casaroro Falls in Negros Oriental",{"src":168,"alt":169},"/about/sipalay-coast-negros-occidental.jpg","Sipalay coast in Negros Occidental",{"openTo":171,"currently":175,"availability":178},[172,173,174],"Full-time","Contract","Remote (UTC+8 overlap)",[176,177],"Building data-rich dashboards with Nuxt","Learning advanced serverless patterns","Accepting new projects now","yml",[181,182,183,184,185,186],{"src":153,"alt":154},{"src":156,"alt":157},{"src":159,"alt":160},{"src":162,"alt":163},{"src":165,"alt":166},{"src":168,"alt":169},{},true,{"openTo":190,"currently":191,"availability":178},[172,173,174],[176,177],"/about",{"src":148,"alt":149},{"title":144,"description":146},"about","vBWzTamfQzliON4NyECwLRwKrig0Ji2sp160KQ-I48A",{"data":198,"body":199},{},{"type":200,"children":201},"root",[202,218,270,277,302,308,326,332,374],{"type":203,"tag":204,"props":205,"children":206},"element","p",{},[207,210,216],{"type":208,"value":209},"text","Hi, I'm ",{"type":203,"tag":211,"props":212,"children":213},"strong",{},[214],{"type":208,"value":215},"Sean Erick Ramones",{"type":208,"value":217},", a full‑stack software engineer with over 7 years of experience building modern, performant web applications.",{"type":203,"tag":204,"props":219,"children":220},{},[221,223,228,230,235,237,242,243,248,250,255,257,262,263,268],{"type":208,"value":222},"I focus on turning complex ideas into elegant, scalable products where design consistency, performance, and developer experience all click. On the frontend I prefer ",{"type":203,"tag":211,"props":224,"children":225},{},[226],{"type":208,"value":227},"Vue 3",{"type":208,"value":229}," and ",{"type":203,"tag":211,"props":231,"children":232},{},[233],{"type":208,"value":234},"Nuxt",{"type":208,"value":236},"; on the backend ",{"type":203,"tag":211,"props":238,"children":239},{},[240],{"type":208,"value":241},"Node.js",{"type":208,"value":229},{"type":203,"tag":211,"props":244,"children":245},{},[246],{"type":208,"value":247},"FastAPI",{"type":208,"value":249},"; for data, ",{"type":203,"tag":211,"props":251,"children":252},{},[253],{"type":208,"value":254},"PostgreSQL/Supabase",{"type":208,"value":256},"; and I deploy to modern serverless/cloud platforms like ",{"type":203,"tag":211,"props":258,"children":259},{},[260],{"type":208,"value":261},"Vercel",{"type":208,"value":229},{"type":203,"tag":211,"props":264,"children":265},{},[266],{"type":208,"value":267},"Cloudflare",{"type":208,"value":269},".",{"type":203,"tag":271,"props":272,"children":274},"h3",{"id":273},"what-i-care-about",[275],{"type":208,"value":276},"What I care about",{"type":203,"tag":278,"props":279,"children":280},"ul",{},[281,287,292,297],{"type":203,"tag":282,"props":283,"children":284},"li",{},[285],{"type":208,"value":286},"Type‑safe code and clean architecture",{"type":203,"tag":282,"props":288,"children":289},{},[290],{"type":208,"value":291},"Reusable components and design systems",{"type":203,"tag":282,"props":293,"children":294},{},[295],{"type":208,"value":296},"Performance, accessibility, and DX",{"type":203,"tag":282,"props":298,"children":299},{},[300],{"type":208,"value":301},"CI/CD and code review culture that scales",{"type":203,"tag":271,"props":303,"children":305},{"id":304},"selected-experience",[306],{"type":208,"value":307},"Selected experience",{"type":203,"tag":278,"props":309,"children":310},{},[311,316,321],{"type":203,"tag":282,"props":312,"children":313},{},[314],{"type":208,"value":315},"Miller Development AB — Full‑stack Software Engineer (Hybrid, 2019–Present)",{"type":203,"tag":282,"props":317,"children":318},{},[319],{"type":208,"value":320},"Better Trade Off Ltd. — Software Developer (Contract, 2023–2024)",{"type":203,"tag":282,"props":322,"children":323},{},[324],{"type":208,"value":325},"SCI Global Services — Full‑stack Software Developer (On-site, 2018–2019)",{"type":203,"tag":271,"props":327,"children":329},{"id":328},"beyond-the-code",[330],{"type":208,"value":331},"Beyond the code",{"type":203,"tag":278,"props":333,"children":334},{},[335,340,345,364,369],{"type":203,"tag":282,"props":336,"children":337},{},[338],{"type":208,"value":339},"Running and cross‑fit training",{"type":203,"tag":282,"props":341,"children":342},{},[343],{"type":208,"value":344},"Watching anime; reading Japanese manga/light novels",{"type":203,"tag":282,"props":346,"children":347},{},[348,350,355,357,362],{"type":208,"value":349},"Playing MOBA games (",{"type":203,"tag":211,"props":351,"children":352},{},[353],{"type":208,"value":354},"Dota 2",{"type":208,"value":356},") and relaxing games (",{"type":203,"tag":211,"props":358,"children":359},{},[360],{"type":208,"value":361},"Stardew Valley",{"type":208,"value":363},")",{"type":203,"tag":282,"props":365,"children":366},{},[367],{"type":208,"value":368},"Driving and exploring new places",{"type":203,"tag":282,"props":370,"children":371},{},[372],{"type":208,"value":373},"Making espresso coffee and showing my (terrible) latte art to friends/colleagues.",{"type":203,"tag":204,"props":375,"children":376},{},[377,379,389,391,399],{"type":208,"value":378},"If you’d like to collaborate, reach me at ",{"type":203,"tag":211,"props":380,"children":381},{},[382],{"type":203,"tag":383,"props":384,"children":386},"a",{"href":385},"mailto:seancramones@gmail.com",[387],{"type":208,"value":388},"seancramones@gmail.com",{"type":208,"value":390}," or connect on ",{"type":203,"tag":383,"props":392,"children":396},{"href":393,"rel":394},"https://www.linkedin.com/in/sean-erick-ramones-102a64192",[395],"nofollow",[397],{"type":208,"value":398},"LinkedIn",{"type":208,"value":269},1773209885394]