[{"data":1,"prerenderedAt":220},["ShallowReactive",2],{"$f8UBgnSf4TvMf5MZEVVV0RE4-fJDrodOGPkZuDj3urBU":3},{"links":4,"hourly":17,"note":22,"services":23,"budgetTiers":129,"budgetTiersLede":219},{"cal":5,"email":6,"emailHref":7,"github":8,"linkedin":9,"mainPortfolio":10,"career":11,"resume":12,"talks":13,"blog":14,"medium":15,"devto":16},"https:\u002F\u002Fcal.com\u002Fsimonee","semariquit@gmail.com","mailto:semariquit@gmail.com","https:\u002F\u002Fgithub.com\u002Fsmmariquit","https:\u002F\u002Fwww.linkedin.com\u002Fin\u002Fstimmie","https:\u002F\u002Fstimmie.dev","https:\u002F\u002Fstimmie.dev\u002Fcareer","https:\u002F\u002Fresume.stimmie.dev","https:\u002F\u002Fstimmie.dev\u002Ftalks","https:\u002F\u002Fstimmie.dev\u002Fblog","https:\u002F\u002Fmedium.com\u002F@semariquit","https:\u002F\u002Fdev.to\u002Fstimmie",{"usd":18,"php":19,"label":20,"note":21},25,1400,"$25\u002Fhr","For code review, build fixes, or deployment checks after the main quote is settled.","Floors by project type. Final quote follows your brief and complexity band.",[24,71,102],{"id":25,"title":26,"summary":27,"description":28,"scopeNote":29,"stack":30,"startingAt":63,"typical":67},"web","Web apps","Static site, cached edge app, or small database-backed MVP.","From a static launch page to an app with live data. I choose the simplest hosting and data model that still fits your users.","Static site, cached edge app, or small database-backed MVP scoped before build.",[31,35,39,43,47,51,55,59],{"id":32,"name":33,"icon":34},"nextjs","Next.js","\u002Ftech\u002Fnextdotjs.svg",{"id":36,"name":37,"icon":38},"nuxt","Nuxt","\u002Ftech\u002Fnuxtdotjs.svg",{"id":40,"name":41,"icon":42},"svelte","SvelteKit","\u002Ftech\u002Fsvelte.svg",{"id":44,"name":45,"icon":46},"astro","Astro","\u002Ftech\u002Fastro.svg",{"id":48,"name":49,"icon":50},"supabase","Supabase","\u002Ftech\u002Fsupabase.svg",{"id":52,"name":53,"icon":54},"gcp","Google Cloud","\u002Ftech\u002Fgooglecloud.svg",{"id":56,"name":57,"icon":58},"cloudflare","Cloudflare","\u002Ftech\u002Fcloudflare.svg",{"id":60,"name":61,"icon":62},"postgresql","Postgres","\u002Ftech\u002Fpostgresql.svg",{"usd":64,"php":65,"label":66},400,22400,"From $400",{"usd":68,"php":69,"label":70},1700,95200,"MVP ~$1,700",{"id":72,"title":73,"summary":74,"description":75,"scopeNote":76,"stack":77,"startingAt":94,"typical":98},"mobile","Mobile apps","Single-platform app first. POS hardware and store release quoted separately.","Offline-first mobile work for schedule tools, maps, or POS hardware where network and device limits shape the design.","Single-platform app first. Custom POS hardware and store release work are quoted separately.",[78,82,86,90],{"id":79,"name":80,"icon":81},"flutter","Flutter","\u002Ftech\u002Fflutter.svg",{"id":83,"name":84,"icon":85},"expo","Expo","\u002Ftech\u002Fexpo.svg",{"id":87,"name":88,"icon":89},"react-native","React Native","\u002Ftech\u002Freact.svg",{"id":91,"name":92,"icon":93},"firebase","Firebase","\u002Ftech\u002Ffirebase.svg",{"usd":95,"php":96,"label":97},1500,84000,"From $1,500",{"usd":99,"php":100,"label":101},2700,151200,"POS ~$2,700",{"id":103,"title":104,"summary":105,"description":106,"scopeNote":107,"stack":108,"startingAt":121,"typical":125},"extension","Browser extensions","One browser, Manifest V3 build, store listing help included.","Chrome or Firefox extensions for browser-native workflows, with local data kept on device when a server is unnecessary.","One browser first, Manifest V3 build, store listing help included.",[109,113,117],{"id":110,"name":111,"icon":112},"typescript","TypeScript","\u002Ftech\u002Ftypescript.svg",{"id":114,"name":115,"icon":116},"javascript","JavaScript","\u002Ftech\u002Fjavascript.svg",{"id":118,"name":119,"icon":120},"vite","Vite","\u002Ftech\u002Fvite.svg",{"usd":122,"php":123,"label":124},500,28000,"From $500",{"usd":126,"php":127,"label":128},1100,61000,"Store ~$1,100",[130,161,187],{"id":131,"band":132,"title":133,"fit":134,"story":135,"tradeOff":136,"stack":137,"proof":148},"static","$400 to $900","Static site","Landing page, org site, or marketing site with a contact path.","Imagine a clinic needing a brochure site and contact path. I would keep the build static, deploy it to Vercel or Cloudflare Pages, and avoid a database unless the content actually needs one.","The trade-off is simple: updates happen through code or a small content file, but hosting stays near zero and there is no idle server to maintain.",[138,139,140,141,142,146],{"id":44,"name":45,"icon":46},{"id":36,"name":37,"icon":38},{"id":32,"name":33,"icon":34},{"id":40,"name":41,"icon":42},{"id":143,"name":144,"icon":145},"vercel","Vercel","\u002Ftech\u002Fvercel.svg",{"id":56,"name":147,"icon":58},"Cloudflare Pages",[149,153,157],{"label":150,"repo":151,"url":152},"GradeSim store landing","smmariquit\u002Fgradesim","https:\u002F\u002Fgithub.com\u002Fsmmariquit\u002Fgradesim",{"label":154,"repo":155,"url":156},"UPLB DSG org site","portfolio","https:\u002F\u002Fstimmie.dev\u002Fprojects\u002Fuplb-dsg-website",{"label":158,"repo":159,"url":160},"Prerendered hire and contact routes","smmariquit\u002Fweb-mobile","https:\u002F\u002Fgithub.com\u002Fsmmariquit\u002Fweb-mobile\u002Fblob\u002Fmain\u002Fnuxt.config.ts",{"id":162,"band":163,"title":164,"fit":165,"story":166,"tradeOff":167,"stack":168,"proof":176},"edge","$900 to $1.9k","Cached app + edge","MVP with auth-light features, contact forms, or live data that must not hammer upstream APIs.","Suppose that same project adds patient lookup, live GitHub stats, or a protected contact form. I add server routes, edge functions, and cache rules only around the parts that need them.","You pay for more engineering time, but you avoid renting a full server just to answer a few dynamic requests. Rate limits and cache expiry are written into the scope.",[169,170,171,173,174,175],{"id":36,"name":37,"icon":38},{"id":32,"name":33,"icon":34},{"id":56,"name":172,"icon":58},"Cloudflare Workers",{"id":48,"name":49,"icon":50},{"id":60,"name":61,"icon":62},{"id":143,"name":144,"icon":145},[177,180,183],{"label":178,"repo":159,"url":179},"Hourly GitHub cache + route SWR","https:\u002F\u002Fgithub.com\u002Fsmmariquit\u002Fweb-mobile\u002Ftree\u002Fmain\u002Fserver\u002Fapi",{"label":181,"repo":159,"url":182},"Contact Worker + Turnstile","https:\u002F\u002Fgithub.com\u002Fsmmariquit\u002Fweb-mobile\u002Ftree\u002Fmain\u002Fworkers\u002Fcontact",{"label":184,"repo":185,"url":186},"CF Bulk Redirect API cached at 3600s","smmariquit\u002Fstimmie.dev","https:\u002F\u002Fgithub.com\u002Fsmmariquit\u002Fstimmie.dev\u002Fblob\u002Fmain\u002Fsrc\u002Flib\u002Fcloudflare.js",{"id":188,"band":189,"title":190,"fit":191,"story":192,"tradeOff":193,"stack":194,"proof":207},"production","$1.9k+","Production stack","Daily users, offline needs, admin flows, or hardware hooks.","For a telehealth startup, POS workflow, or campus app with daily users, the architecture changes. We bring in authenticated APIs, a database, offline storage, release checks, and a handoff document your team can run.","This costs more time because failure modes matter: missing migrations, double submissions, stale offline data, and rate limits need guards before launch.",[195,196,197,198,199,203],{"id":79,"name":80,"icon":81},{"id":91,"name":92,"icon":93},{"id":48,"name":49,"icon":50},{"id":60,"name":61,"icon":62},{"id":200,"name":201,"icon":202},"pwa","PWA","\u002Ftech\u002Fpwa.svg",{"id":204,"name":205,"icon":206},"docker","Docker","\u002Ftech\u002Fdocker.svg",[208,212,216],{"label":209,"repo":210,"url":211},"Room TBA: PGlite + Supabase + PWA","uplbtools\u002Froom-tba","https:\u002F\u002Fgithub.com\u002Fuplbtools\u002Froom-tba",{"label":213,"repo":214,"url":215},"Bus POS: Jest on PR, APK artifact CI","smmariquit\u002Fbus-ticketing-app","https:\u002F\u002Fgithub.com\u002Fsmmariquit\u002Fbus-ticketing-app\u002Ftree\u002Fmain\u002F.github\u002Fworkflows",{"label":217,"repo":151,"url":218},"GradeSim: semantic-release to Chrome Web Store","https:\u002F\u002Fgithub.com\u002Fsmmariquit\u002Fgradesim\u002Ftree\u002Fmain\u002F.github\u002Fworkflows","Your feature list picks the band. I quote inside that range after the brief, not before.",1783188173598]