Hello guys, welcome to my portfolio! 👋 This is where I share my projects, things I'm learning, and a bit of my journey in IT. Feel free to look around! You can also try the chatbot to ask about my work, or just see how it replies haha. Thanks for stopping by!
Personal · 3D party games
Inuman

Image 1 of 1
Open full-size image (opens in a new tab)Overview
A mobile-first collection of 13 drinking and party games I built for the barkada. One phone is passed around the table, with a 3D bar setting, interactive cards and dice, physics-based throws, and prompts in Taglish or English. It brings game rules, player turns, custom content, and feedback together in an installable web app.
An 18+ personal project with non-alcoholic play, configurable sip caps, and water reminders. Games run locally on one shared device; online multiplayer is not implemented.
My contribution
Developer
I built the game engine, React interface, 3D scenes, physics integration, and offline support. The project gave me room to work on deterministic game logic, touch interactions, browser storage, and mobile rendering performance within one application.
Thirteen games on one device
- Card games include Higher or Lower, King's Cup, and Ride the Bus. Dice games include Mexico, Liar's Dice, and Ship, Captain & Crew.
- Beer Pong, Flip Cup, and Quarters provide skill-based interactions. Spin the Bottle, Truth or Dare, Never Have I Ever, and Most Likely To round out the party games.
- Players can be added by name, renamed, reordered, or marked as sitting out. Private-turn covers help keep hidden information from the next person holding the phone.
Game logic & physics
- A pure TypeScript core separates rules and state transitions from React and 3D rendering. Each game defines its setup, action validation, reducer, and player-specific view of hidden information.
- Sessions store seeded random-number state for reproducible outcomes. Dice animations present the result selected by the game logic, while physics determines throw outcomes for Beer Pong and Quarters.
- Rapier simulations run in a Web Worker, with a main-thread fallback when workers are unavailable. The interface replays simulation results to keep the physics work separate from rendering.
Bilingual prompts & customization
- The interface supports Taglish and English. Built-in prompt packs carry both languages and can be filtered by content intensity, with adult prompts requiring opt-in.
- A prompt-pack editor supports custom content stored in IndexedDB. Packs, house rules, and themes can be shared through compressed links, QR codes, or files, with validation and an import preview before saving.
- House-rule forms are generated from game schemas. Players can also customize card backs, table felt, dice finishes, and cup colors.
3D presentation & mobile performance
- Three.js, React Three Fiber, and Drei render the bar environment and game props through one persistent canvas, avoiding repeated WebGL context creation between games.
- On-demand rendering, lazy loading, and lobby warm-up reduce unnecessary work. High, Mid, Low, and automatic quality options provide control over rendering on different devices.
- Sound effects, background music, and supported-device haptics provide feedback. Volume controls and visual theme settings let players adjust the experience.
Local storage & offline play
- Zustand manages application state, with browser persistence for settings and player information and IndexedDB for custom prompt packs.
- A service worker precaches the app shell and sound effects. Models, textures, and music use runtime caching, so those assets need to be loaded online before they are available offline.
- The app can be installed to a supported device's home screen and is hosted on Vercel. Gameplay does not require an account or a game server.
Play settings & validation
- Shared drink-resolution logic applies multipliers, sip or tagay units, per-turn limits, and non-alcoholic settings consistently across games. Players can disable finish-drink instructions and configure water reminders.
- The repository includes Vitest and fast-check tests for game logic and supporting utilities, plus Playwright flows using mobile browser emulation.
- Dedicated dice and throw simulation checks sit alongside an in-app performance benchmark for frame times and draw calls across game scenes.
More personal projects

Social Portfolio
My personal portfolio, built around the feel of a social profile. It brings together projects, quick updates, longer write-ups, and an AI assistant that helps visitors explore my work through conversation. I wanted the site itself to show how I build, not just display the finished projects.

BetterBacoor
A place to find Bacoor services, requirements, and local information before heading to a government office. An unofficial, community-run guide for residents.

PULSE
My college capstone project: a community mobile app that brings announcements, local buying and selling, volunteer activities, and community reports into one place.


Ronan Dela Cruz
Server Administrator & Full Stack Developer
I work with Linux servers and build web applications. This is where I share my projects, things I'm learning, and the occasional fix that took longer than it should have.
512 Connections
2,847Followers
Posts
I built BetterBacoor, inspired by BetterGov.ph and the BetterLGU community. I wanted to make it easier to find what you need before visiting a government office in Bacoor. It brings service requirements, office contacts, and official links into one place. It's an unofficial, community-run guide and it's open source. You can find the website and code in the project below.

BetterBacoor
A place to find Bacoor services, requirements, and local information before heading to a government office. An unofficial, community-run guide for residents.
Hot take: The best portfolio is one that doesn't look like a portfolio. Show your thinking, your process, and your personality, not just polished final screenshots.
I'm building my own portfolio to showcase my projects and share what I'm learning. I wanted it to feel a bit more like me, so I went with a social media style. There will be posts, project updates, and blogs about my experience. A place where I can share the work and the things that happen along the way. I'm also making it open source so others can use it too.
Just automated something I used to do manually I've been managing LMS servers for clients, and every time we provision a new one, it meant SSH-ing in, editing config files, updating databases, restarting services... the same steps every single time. This week I finally tried Ansible for the first time. One playbook. One command. Done. Still a lot to learn, but this is a huge step up from manual configs.
Projects
18 projects
Blog
My experiences, things I learn, and life outside the code.
About
I'm Ronan, an IT graduate based in the Philippines. At Seaversity, I look after Linux servers and Moodle environments, and write scripts to make repetitive work a little easier.
Outside that work, I build web and mobile applications, often around everyday needs in local communities and small businesses. I'm also learning more about cloud infrastructure and DevOps. This site is a place to share what I'm building and learning along the way.
Experience
May 2026 – Present
Nov 2025 – May 2026
Aug 2025 – Nov 2025
Skills
Infrastructure & Operations
- Linux Administration
- Rocky Linux
- Sangfor MCS
- Moodle
- Nginx
- NPMplus
- Cloudflare
- Tailscale
- MinIO
Application Development
- TypeScript
- React
- Tailwind CSS
- Express.js
- PostgreSQL
- MySQL
- Redis
- Firebase
- Supabase
Automation & Tools
- Bash
- Ansible
- Git
- Docker
- Claude Code
- Codex
- Hermes Agent
Education
St. Dominic College of Asia
Bachelor of Science in Information Technology
2022 – 2026













