[{"data":1,"prerenderedAt":246},["ShallowReactive",2],{"$fGql8sqqvu5CJ-Iscik3YybxUOClA0RWLN2fkG-1p6jY":3},[4,36,67,94,119,146,173,200,223],{"slug":5,"title":6,"subtitle":7,"category":8,"year":9,"featured":10,"description":11,"impact":12,"situation":13,"constraint":14,"reasoning":15,"decision":16,"craftMoment":17,"outcome":18,"postmortem":19,"stack":20,"links":25,"previews":28,"images":31,"color":34,"headline":35},"hearthcraft","HearthCraft","7-year community server I led as an operations lab","web",2018,true,"A long-running Minecraft community where uptime, moderation, cost, and fairness had to be designed together.","50,000+ players · 7 years · 0 world resets · donation-funded ops","HearthCraft was a free, community-driven Minecraft server I led from 2018 to 2025. It started as a small world for friends and grew into a live community with staff, player support, hosting bills, and a strong no-pay-to-win rule.","Budget stayed donation-funded, about $150 to $200 per month at peak. The world had to stay online for players across time zones, run on modest compute, and never reset as a shortcut for maintenance.","A managed cloud stack would have cut some admin work, but the monthly bill climbed fast. A dedicated bare-metal box from Bloom.host gave predictable CPU and RAM for one flat cost that donations could cover. Paid plugins could have bought convenience, but they would have pulled the economy toward unfair advantages.","I bought that dedicated Bloom.host machine, containerized the Java server in Docker, and kept restart and backup scripts simple enough for volunteer staff to run. The shop funded hosting without selling gameplay power.","The work was not only keeping a process alive. I treated lag spikes, grief reports, and staff mistakes as production incidents, with backups, rollback habits, and runbooks instead of panic fixes.","HearthCraft ran for seven years without resetting the world. Players logged thousands of hours, donations covered hosting, and the project became my first serious lesson in operating software for people who relied on it daily.","If I were rebuilding it now, I would add better telemetry and migration scripts so staff could spot performance and data issues earlier.",[21,22,23,24],"Java","Docker","Spigot\u002FPaper","Linux",{"live":26,"github":27},"https:\u002F\u002Fhearthcraft.stimmie.dev","https:\u002F\u002Fgithub.com\u002Fsmmariquit\u002Fhearthcraft-museum",{"desktop":29,"mobile":30,"tablet":29},"\u002Fprojects\u002Fhearthcraft\u002Fdesktop.jpg","\u002Fprojects\u002Fhearthcraft\u002Fmobile.png",[29,30,32,33],"\u002Fprojects\u002Fhearthcraft-2.jpg","\u002Fprojects\u002Fhearthcraft-3.jpg","#e8a946","Keeping one world alive for seven years",{"slug":37,"title":38,"subtitle":39,"category":8,"year":40,"featured":10,"description":41,"impact":42,"situation":43,"constraint":44,"reasoning":45,"decision":46,"craftMoment":47,"outcome":48,"postmortem":49,"stack":50,"links":57,"previews":60,"images":64,"color":65,"headline":66},"room-tba","Room TBA","UPLB campus room and class finder",2026,"An offline-capable campus viewer for students who need building, dorm, and room data when campus Wi-Fi fails.","500+ student users · offline search · static hosting","Incoming UPLB students often had schedules with unfamiliar room codes and no easy way to map them to real buildings. Room TBA turns campus room data, dorms, buildings, and paths into a searchable 3D viewer.","The team had volunteer help, no budget, and an orientation deadline. Campus Wi-Fi is unreliable, so the map needed to keep working after a first visit instead of depending on a server round trip.","A fully hosted map service would have made search logic simpler, but it would also add a bill and fail when the network failed. Static hosting with offline storage fit the actual student problem better.","I used Astro for the static site, three.js for the 3D campus view, and PGlite, a browser SQLite database, stored in IndexedDB for offline room data. Cloudflare handles the small dynamic pieces when the network is available.","I moved geometry and search indexing into a Web Worker so the first load could prepare the map without freezing the interface. After that, students could search rooms even when campus Wi-Fi dropped.","The app launched before freshman orientation and has helped more than 500 students find classes and dorms. The bigger win was matching the architecture to campus reality: cheap to host, quick to load, and useful offline.","The next improvement would be a cleaner data update workflow so volunteers can refresh room records without touching the application code.",[51,52,53,54,55,56],"Astro","TypeScript","Three.js","PGlite","OpenStreetMap","PWA",{"live":58,"github":59},"https:\u002F\u002Froom-tba.stimmie.dev","https:\u002F\u002Fgithub.com\u002Fsmmariquit\u002Froom-tba",{"desktop":61,"tablet":62,"mobile":63},"\u002Fprojects\u002Froom-tba\u002Fdesktop.jpg","\u002Fprojects\u002Froom-tba\u002Ftablet.jpg","\u002Fprojects\u002Froom-tba\u002Fmobile.jpg",[61,63],"#3ecfb0","Offline campus search for UPLB",{"slug":68,"title":69,"subtitle":70,"category":71,"year":72,"featured":10,"description":73,"impact":74,"situation":75,"constraint":76,"reasoning":77,"decision":78,"craftMoment":79,"outcome":80,"postmortem":81,"stack":82,"links":87,"previews":89,"images":91,"color":92,"headline":93},"bus-ticketing-app","Bus Ticketing System","Offline ticketing app for Sunmi POS hardware","mobile",2025,"A React Native fare collection app for Android POS tablets, printed receipts, and weak network conditions.","10 tested devices · offline queue · APK builds in CI","A regional bus operation needed drivers to issue tickets from Android POS tablets. The app had to calculate fares, print receipts over Bluetooth, and keep transactions even when the route had no reliable signal.","The build had a two-week timeline, one developer, low-end hardware, and spotty mobile data. A double charge or lost ticket would be worse than a slow sync.","A web app would have been easier to deploy, but it could not dependably reach the printer or survive long offline stretches. Native Android was possible, but React Native gave enough hardware access while keeping iteration speed high.","I built a React Native APK with local SQLite storage, Bluetooth receipt printing, and HTTP sync only when cellular data was available. Fare rules were covered by Jest tests before release.","The key detail was a journaling queue around ticket printing. One tap records intent, prints once, and only retries when the failure is safe to retry, which avoids duplicate charges during flaky printer states.","The POS app printed reliably on 10 tested devices and kept transactions locally through network drops. Drivers could keep selling tickets first, then let the device sync when the route had signal again.","With more time, I would add a small supervisor dashboard so managers can see unsynced devices before the end of a route.",[83,52,84,85,86],"React Native","SQLite","Jest","GitHub Actions",{"github":88},"https:\u002F\u002Fgithub.com\u002Fsmmariquit\u002Fbus-ticketing-app",{"mobile":90},"\u002Fprojects\u002Fbus-ticketing-app\u002Fmobile.png",[90],"#e86a7e","Hardware-integrated transactions",{"slug":95,"title":96,"subtitle":97,"category":71,"year":40,"featured":10,"description":98,"impact":99,"situation":100,"constraint":101,"reasoning":102,"decision":103,"craftMoment":104,"outcome":105,"postmortem":106,"stack":107,"links":112,"previews":114,"images":116,"color":117,"headline":118},"revolt","Revolt","EV charging map, trip planning, and reservations","Expo app for finding chargers, planning routes with stops, and booking slots. Still in MVP development.","Expo MVP · OpenChargeMap · Supabase schema · tiered CI","Revolt targets EV owners who need nearby chargers, trip routes with charging stops, and a way to reserve a slot before they arrive. The product is a team MVP, not a shipped store release yet.","The team had to move fast on maps and reservations without owning station inventory. Google Maps costs, OpenChargeMap response shapes, and mobile GPS quirks had to be handled before payments or live availability.","A native rewrite would slow iteration on map and trip flows. Expo kept device testing quick while React Navigation and react-native-maps covered the core UX. Station listings stay on OpenChargeMap, with Supabase and Prisma only for profiles, vehicles, and reservations.","I wired trip planning so route calculation runs once and passes into the route screen, extracted domain helpers for station parsing, and tightened CI with tiered Jest runs plus component tests on shared loading and error states.","Plan trip and route screens were both calling the route API, which wasted requests and showed inconsistent distances. Computing once and passing the result fixed the flicker and the cost pattern.","The MVP covers map browse, trip planning, reservations, and a staging-to-main pipeline with lint, type checks, and regression tests. Store launch and live payments are still ahead.","I would finish Supabase auth and Stripe wiring before adding more map screens, because reservation flows need real identity and payment guards early.",[108,83,52,109,110,111],"Expo","Supabase","Prisma","OpenChargeMap",{"github":113},"https:\u002F\u002Fgithub.com\u002Fanneryeo\u002FREVolt",{"mobile":115},"\u002Fprojects\u002Frevolt\u002Fmobile.png",[115],"#16a34a","Maps-first EV trip planning MVP",{"slug":120,"title":121,"subtitle":122,"category":8,"year":40,"featured":123,"description":124,"impact":125,"situation":126,"constraint":127,"reasoning":128,"decision":129,"craftMoment":130,"outcome":131,"postmortem":132,"stack":133,"links":138,"previews":140,"images":143,"color":144,"headline":145},"uplb-dsg-website","UPLB DSG Website","UPLB Data Science Guild org site",false,"A student org site designed around events, recruitment, and a clearer identity than a generic template could provide.","Design lead · org site · workshop sign-ups","The UPLB Data Science Guild needed a public site for recruitment, events, and workshop sign-ups. The site had to feel like the student guild itself, not a placeholder page with a logo at the top.","The stakeholders were volunteers, the budget was zero, and updates had to be simple enough for student officers to handle during busy semesters.","A generic template would have shipped faster, but it would not explain the guild culture or make events easy to scan. A custom static site took more care up front and reduced maintenance later.","I led the visual direction and built a responsive static site with a simple content structure. The priority was clear event paths, readable sections, and a design system future officers could copy without asking a developer each time.","I set up preview checks around content changes so new event posts could be reviewed before they went public. That mattered because student org sites often break through rushed last-minute updates.","The DSG site gave the guild a cleaner home for workshops and recruitment. It also proved that a zero-budget org project can still have deliberate design choices instead of settling for a copied template.","The next pass should move event content into a small editor-friendly format so non-developers can publish updates faster.",[134,135,136,137],"SvelteKit","Figma","Responsive UI","GitHub Pages",{"live":139},"https:\u002F\u002Fstimmie.dev\u002Fprojects\u002Fuplb-dsg-website",{"desktop":141,"mobile":142,"tablet":141},"\u002Fprojects\u002Fuplb-dsg-website\u002Fdesktop.png","\u002Fprojects\u002Fuplb-dsg-website\u002Fmobile.png",[141,142],"#9d4edd","Design-led org site",{"slug":147,"title":148,"subtitle":149,"category":150,"year":40,"featured":123,"description":151,"impact":152,"situation":153,"constraint":154,"reasoning":155,"decision":156,"craftMoment":157,"outcome":158,"postmortem":159,"stack":160,"links":164,"previews":167,"images":170,"color":171,"headline":172},"gradesim","Elbi GradeSim","UPLB grade simulator and browser extension","extension","A grade planning tool for UPLB students that keeps calculations on-device and ships through extension stores.","200+ student users yearly · store releases · offline exports","UPLB students often plan grades with spreadsheets passed around in group chats. GradeSim turns that habit into a small browser tool for GWA calculations, Latin honors targets, and course what-ifs.","The project had no budget, student users, and sensitive academic data that did not need to touch a server. It also had to work as both a website and an installable browser extension.","A mobile app would have added store friction, and a server-backed planner would create privacy work without a clear benefit. A browser extension kept the tool close to where students already checked academic pages.","I used Next.js and a Manifest V3 extension build, then automated releases with semantic-release. Grade calculations run locally so students can plan without creating an account.","The export feature uses the Chrome downloads API so students can save grade scenarios offline. It is a small feature, but it turns a temporary calculation into something they can revisit before enlistment.","GradeSim launched across web and extension flows and now helps around 200 students a year plan course loads. The project stayed intentionally small because local calculation solved the real problem.","I would add better import checks next, especially for messy copied grade tables from different campus systems.",[161,52,162,163],"Next.js","Browser extension","Semantic Release",{"live":165,"github":166},"https:\u002F\u002Fgradesim.stimmie.dev","https:\u002F\u002Fgithub.com\u002Fsmmariquit\u002Fgradesim",{"desktop":168,"mobile":169,"tablet":168},"\u002Fprojects\u002Fgradesim\u002Fdesktop.png","\u002Fprojects\u002Fgradesim\u002Fmobile.png",[168,169],"#c41e3a","Private grade planning in the browser",{"slug":174,"title":175,"subtitle":176,"category":8,"year":72,"featured":10,"description":177,"impact":178,"situation":179,"constraint":180,"reasoning":181,"decision":182,"craftMoment":183,"outcome":184,"postmortem":185,"stack":186,"links":187,"previews":190,"images":194,"color":198,"headline":199},"atlas-of-my-skies","Atlas of My Skies","Photography portfolio","A personal photography site that treats places, dates, and weather as part of the story behind each image.","Photography · mapped archive · personal publishing","Atlas of My Skies began as a way to keep sky photos from becoming another unsearchable camera roll. I wanted each image to carry enough context that it could be read like a small journal entry.","The site needed to stay lightweight, image-heavy, and cheap to host. It also had to keep the publishing flow simple enough that adding photos would not become a separate weekend project.","A full CMS was more machinery than the project needed. Static pages with structured metadata gave me the archive behavior I wanted without a database.","I built the site with Next.js and local content metadata, then kept the visual system quiet so the photos carry the page. The map and archive structure provide context without turning it into a dashboard.","The useful detail was pairing each photo with place and moment data. That made the archive browsable by memory, not only by file name.","The result is a personal portfolio that is simple to maintain and specific to the work. It also gave me a reusable pattern for visual archives with structured context.","I would add a faster batch-editing flow before the archive grows much larger.",[161,52],{"live":188,"github":189},"https:\u002F\u002Fatlas-of-my-skies.stimmie.dev","https:\u002F\u002Fgithub.com\u002Fsmmariquit\u002Fatlas-of-my-skies",{"desktop":191,"tablet":192,"mobile":193},"\u002Fprojects\u002Fatlas-of-my-skies\u002Fdesktop.jpg","\u002Fprojects\u002Fatlas-of-my-skies\u002Ftablet.jpg","\u002Fprojects\u002Fatlas-of-my-skies\u002Fmobile.jpg",[195,196,197],"\u002Fprojects\u002Fatlas-of-my-skies-1.jpg","\u002Fprojects\u002Fatlas-of-my-skies-2.jpg","\u002Fprojects\u002Fatlas-of-my-skies-3.jpg","#9678f0","Personal data cartography",{"slug":201,"title":202,"subtitle":203,"category":8,"year":40,"featured":123,"description":204,"impact":205,"situation":206,"constraint":207,"reasoning":208,"decision":209,"craftMoment":210,"outcome":211,"postmortem":212,"stack":213,"links":216,"previews":218,"images":221,"color":222,"headline":202},"pizza-and-friends","Pizza & Friends","Tech community site","A community landing page for meetups and projects, written to feel like people inviting people.","Co-founder · community home · joinpizza.fun","Pizza & Friends needed a small web home for a tech community that started around dinner tables, Discord, and shared projects. The site had to invite people in without sounding like a corporate group.","The community was young, the content would change, and the page had to be useful before there were many formal programs to list.","A heavy content system would have slowed the first version. A static landing page let us clarify the promise, link the Discord, and leave room for the community to grow into the site.","I kept the structure simple: who it is for, what happens there, and how to join. The writing does most of the work, with enough visual identity to feel specific without locking the group into a brand system too early.","The main edit was removing phrases that sounded like a startup pitch. Community sites work better when they sound like the people who actually show up.","The site gave Pizza & Friends a clear place to point new members and collaborators. It also kept the maintenance burden low while the community figured out its rhythm.","The next useful step is a small events archive once meetups become more regular.",[214,215,136],"Web","Community",{"live":217},"https:\u002F\u002Fwww.joinpizza.fun",{"desktop":219,"mobile":220,"tablet":219},"\u002Fprojects\u002Fpizza-and-friends\u002Fdesktop.png","\u002Fprojects\u002Fpizza-and-friends\u002Fmobile.png",[219,220],"#c22e1f",{"slug":224,"title":225,"subtitle":226,"category":8,"year":40,"featured":123,"description":227,"impact":228,"situation":229,"constraint":230,"reasoning":231,"decision":232,"craftMoment":233,"outcome":234,"postmortem":235,"stack":236,"links":239,"previews":241,"images":244,"color":245,"headline":225},"kape","Kape","Open-source tip jar","A local creator tip jar that avoids platform cuts and keeps the payment path simple.","Open source · Philippine payment rails · kape.stimmie.dev","Kape is a free buy-me-a-coffee alternative for local creators who want a link they own and a payment flow that makes sense in the Philippines.","The project had to stay open source, avoid a platform cut, and support local payment habits without building a financial product larger than the need.","A marketplace model would add moderation, billing, and dispute handling. A personal tip jar keeps the scope honest: profile, payment link, and enough structure for creators to share it.","I built the first version as a lightweight web app with creator-owned links and no platform fee. The stack stays intentionally small because trust in a payments-adjacent tool comes from clarity, not extra screens.","The important product decision was what not to store. Keeping sensitive payment handling outside the app reduces the risk surface while still giving creators a useful public page.","Kape now works as an open-source reference for simple local creator support pages. It shows the same habit I bring to client work: narrow the scope until the risk matches the budget.","Before expanding it, I would write clearer provider setup docs so other creators can self-host with fewer questions.",[214,237,238],"Open Source","Payments",{"live":240},"https:\u002F\u002Fkape.stimmie.dev",{"desktop":242,"mobile":243,"tablet":242},"\u002Fprojects\u002Fkape\u002Fdesktop.png","\u002Fprojects\u002Fkape\u002Fmobile.png",[242,243],"#d98e27",1783188173594]