Hello everyone! Sieena here. It’s been a while since I gave you a behind-the-scenes look at goSupertools. This post is all about the technical side and development updates!
Warning from the goSupertools team: "What will follow is an uncensored development blog. Read at your own discretion and if you have questions, do ask Sieena in the forum topic linked below."
Last year, we decided to migrate from Strato to Hetzner. Strato had given us some DNS issues, and their VPS servers were hitting a memory bottleneck. Hetzner offered better scalability (and was cheaper!). The old server would then be used for internal management tools like our mail server and task tracking.
We also brought in a new team member, a good friend of mine, who’s now our "infrastructure manager." He handles hosting, server management, the git repo, Docker, performance monitoring and all the non-dev tech work, giving me more time to code!
Another major project: rewriting the entire goSupertools codebase!
I originally started goSupertools in 2023 to see how rusty my PHP-skills were, I hadn’t touched PHP since 2016... I hadn’t kept up with updates like PHP 8 at all, so a lot of the code I wrote early on was already outdated and a total performance nightmare. Some of that old code is still in use today, and over time, I kept building on top of it.
While parts like the session handler are surprisingly solid, other parts... not so much. Our database handler is a mess, and the item ingest script is a disaster to work with and maintain. It basically does a full insert for every row in the database. Our Items table alone has over 300 rows, and we saved every color variant of an item as a separate row. One hairstyle in 60 colors? 60 rows. Add a backlayer? Another 60 rows. Hex codes? 60 more. When we added color filters later on, yep, 60 extra rows again! That's some of our code issues we have to deal with day to day.
Because of all this, we decided to rebuild goSupertools from scratch, moving from a LAMP stack to Svelte, TypeScript, Golang, and PostgreSQL. Our infrastructure manager tackled the backend to learn Golang, and I focused on the frontend. We started by rebuilding the database page as a test, new header, new ingest script, and a better item filter system. After a week, about 2000 lines were fully working!
...But in the end, we decided against moving forward with the full rewrite. I’ll explain more about that decision and our next steps in the next Dev Talk, (hopefully) coming soon!
Thanks so much for reading. I’d love to hear your feedback and chat with anyone who’s into coding. What do you all think? Do you have any feedback or suggestions/questions? Discuss it in the Thread HERE. A little spoiler: Newspost comments coming soon ;)