Switching our system development to custom web apps built with HTML and Google Apps Script (GAS) dramatically accelerated our pace of creation.
Project management, invoicing, vehicle inspections, emergency safety reports, and our highly anticipated drag-and-drop scheduling app came to life one after another. I was thoroughly enjoying the immense satisfaction of insourcing our operations without relying on external vendors.
Yet, as the number of apps grew and real data began circulating in the field, new doubts and anxieties began to surface in my mind.
The Limits and Terrors of Spreadsheets
The first concern centered around our data repository (database).
At the time, all of our on-site data, including daily logs and worker assignments, was being recorded directly onto Google Sheets. While this worked perfectly and ran smoothly when data volumes were small, a persistent worry haunted me: "If our data keeps accumulating at this rate, won't this system eventually become incredibly sluggish?"
Furthermore, if the spreadsheets ever became overloaded and unable to cope, migrating that massive volume of data to an entirely different system would be an incredibly arduous task. The fear of "it runs fine today, but could crash from capacity overload tomorrow" was ever-present.
App Integration Obstacles and the "1,000-Line Code Limit"
The second hurdle was cross-app integration.
Because we had built each app as an independent silo using HTML and script files, they didn't communicate well with one another on the back end. Our daily log data, scheduling data, and invoicing data were locked in separate compartments, unable to connect smoothly.
To make matters worse, as we added more features, the code grew exponentially until we finally collided with the "1,000-line limit." Once a script grew too long, our primary ally, Gemini, struggled to grasp the complete picture, making it incredibly difficult to track down and fix bugs.
A Major Shift to Modern Programming
Realizing we would soon hit a wall if we continued down this path, I made the decision to fundamentally overhaul our entire system architecture.
This led us to adopt "React" and "Supabase."
We reorganized and streamlined our user interfaces using React, and replaced Google Sheets with "Supabase" — a robust, professional relational database — as our data repository.
With these changes, no matter how complex our data connections became or how much the volume grew, the system ran instantly and seamlessly. The core skeleton of our company's infrastructure was finally complete.
The Image Data Wall and "Hybrid Architecture"
However, we immediately ran into another highly practical issue: "site photos."
Our daily log application allows technicians to upload on-site photos (where photography is permitted). Initially, we stored all of these image files directly inside Supabase. However, because image data is heavy, we quickly realized that storing them there would cause our cloud hosting fees to skyrocket.
"The cost of maintaining our system must be kept as smart and economical as possible."
Racking my brain, I devised a unique hybrid system architecture.
Photos uploaded from the field are first compressed by the system, and then stored directly in a folder on "Google Drive," where storage capacity is plentiful and cost-effective. Meanwhile, Supabase manages only the smart metadata (the connection) that links each photo to the specific job site and daily log.
By dividing these roles, we successfully created the optimal system for our company — one that manages vast amounts of on-site photos seamlessly while keeping monthly costs to an absolute minimum.
The Most Exciting, Ultimate Infrastructure
At first, I was just the president of an electrical company who had spent two weeks playing around with no-code tools.
Now, working through weekends and eagerly battling bugs alongside AI, I had designed a cost-effective, fully integrated hybrid infrastructure.
A 100% custom-fit, ultimate infrastructure that powers our company.
We had truly brought it to life with our own hands.
But this is not the end.
Our next challenge. Please look forward to it!
---
▶︎ Return to Home
View latest updates on our homepage