The Hard Part Wasn’t the Code
October 22, 2025 4 min read
I didn’t create the BeachOps System as a showcase of my technical skills—it was built to solve the real, everyday problems our department faces. From managing leave calendars and weekly deployments to enabling part-timers to book their shifts, the goal was simple: make our operations work better.
Why I Built It
For years, our workflows at the beach were painfully manual. Leave requests were still on paper, deployment rosters were edited with erasers, and tide information was checked manually from PDFs. When something changed—a shift swap, a new schedule—it meant sending screenshots around, waiting for confirmations, and hoping everyone saw the latest version.
The turning point came when an EC (Environmental Controller) supervisor asked me to digitally sign a document on his phone. It struck me how far behind we were. While other departments were moving toward paperless systems, we were still chasing signatures with pens. Sentosa often talks about sustainability and innovation, but the DTT DevOps Team wasn’t offering the support we needed. If we wanted progress, we’d have to build it ourselves.
The Build Journey
The BeachOps System took eight months to develop, including three or four complete rebuilds and a full database redesign. Each version taught me something new about what the system needed to be—and what it didn’t.
The first prototype focused too much on the interface; it looked good, but didn’t scale well with real-world data. The second version used an overly complex database structure that broke once we started testing with real rosters. It wasn’t until the third rebuild that I found the right balance: simplicity, performance, and maintainability.
I built it with Next.js, Supabase, and Vercel, technologies that made development fast but flexible. Supabase handled authentication, role-based access control, and file storage for staff photos and documents. Next.js provided a clean front-end framework for dashboards and forms. What used to be dozens of spreadsheets and printed rosters could now fit neatly into a single, cohesive web app.
By the time the fourth version went live, the system could:
- Let MREs request and track leave digitally
- Allow supervisors to approve and manage rosters
- Enable HREs to book weekly shifts directly
- Show real-time tide information and event updates
What started as a side project became something bigger—an operational backbone for our department.
The Unexpected Challenge
The coding was the easy part.
What caught me completely off guard was teaching people how to use it.
Even after writing detailed user guides and FAQs, adoption was slow. Some staff didn’t understand that the app worked inside a browser; others confused it with WhatsApp. For them, logging in felt foreign. I realized that technical change means nothing without cultural change—and teaching is a skill of its own.
I turned to ChatGPT for advice, and it suggested creating screencasts to demonstrate each workflow visually. That’s probably my next step. But I’ve also come to understand that digital transformation isn’t about forcing speed—it’s about earning trust. Some of our team members have been working here for decades; change doesn’t happen overnight.
Lessons Learned
Looking back, BeachOps taught me more than any coding project I’ve ever done. It reminded me that:
- Technology is the easy part; people are the hard part.
- Progress starts when we stop waiting for someone else to fix things.
- Adoption takes empathy, not just documentation.
I didn’t expect to play the role of teacher, but perhaps that’s what this phase requires. I’m learning to slow down, to listen, and to celebrate small wins—like when someone submits their first leave request successfully or navigates the dashboard without help.
The BeachOps System isn’t perfect, and neither am I. But both are improving—one update, one conversation, one person at a time.
All opinions are my own. The BeachOps System is an internal tool for Sentosa Beach Patrol operations.