Should I Rebuild My CMS?
My CMS Needs Some TLC
When I first started working on my own Content Management System (CMS), I had a goal in mind: to make the system modular so that I could build an install script and just tick off the boxes for features I needed on a certain domain. That quickly went out the window, though, as I only had a few websites at the time and didn't see any need for it.
A Growing Number of Websites
I'm currently up to six websites and have had to basically take my code from one website, clone it, and do a massive amount of edits to make it work on another website. It's now clear that I don't have a "system"; I have a blueprint. What's worse is that if I make a minor change to the backend, I either have to repeat that process six times or only include the new code on the relevant websites.
Most of the time, this isn't an issue, but over time the code for all sites has become scattered enough that they are starting to diverge from the original code and are becoming their own systems entirely. That can be a problem if I decide to add a chunk of code on the fly without testing, which happens quite often.
Missed Opportunities for Modularity
If I had stuck to the original plan, then when I started a new site, I could have had an install file do the initial setup for me. Then I could use Wisedocks, for example, as the base for this code and push updates out to my other sites as I made edits. A Git repository would really come in handy, but I stubbornly decided not to mess with all of that when I first started this project. In a way, I wanted every site to develop its own personality. The frontend of the websites isn't really the problem; it's more the functionality of the backend where I run into headaches.
Considering Centralized Administration
I've tossed around ideas like making one central admin area on just one domain and being able to push out content to whichever website I need. This would save server space and make my life so much easier. But to do that, I would need to set up APIs for each site, which can be tricky in itself.
Ultimately, I think I just want each site to have its own backend admin panel, but I need to keep the code uniform and create batch updates using Wisedocks as the testing ground for new additions. Then again, for that to work, I need more code to account for every conceivable use case, which sort of defeats the purpose of why I decided to build my own CMS to begin with. I wanted a fast system with minimal code.
A New System
I think the best thing to do would be to start over with a brand-new system that's more modular in nature, like I originally intended. But I think I will wait for a while because I'm still adding features all the time. Once I get every site into a somewhat stable state that I feel I can feature lock, then it would be the best time to pull the trigger, as I would then know what to include in the new system. I'm a long way off from that. Hell, I haven't even built the comments sections for the blogs yet, and I'm sure I'll want that in the new system.
I would rather wait until I get everything built, then I can just take my existing code and start anew by reworking what I already have. It's easier to edit code by changing repetitive tasks into functions once I see and realize what actually needs to be made into a function—or even what all that particular function should include to cover all my bases.
Tackling Functionality Issues
Image uploads are a big one that comes to mind. I have functions for uploading images, but they exist within their respective files as they do different things. For instance, some websites have hardcoded dimensions for thumbnail creation, which vary depending on the website layout. This could be handled with variables, but I may want to add more functionality to it.
I do like the media setup in WordPress, so I may want to make something similar to that. All of my sites are set up like blogging systems, but I think I'm going about that wrong. I should have the backend create pages, which is very similar to what I do now, but I could add more robustness to it—like being able to edit the stylesheet within the editor and also list all existing classes to make nicer layouts instead of just creating posts as my system does now. I don't know, I'm just tossing ideas out of my ass now. All I do know is that my CMS needs some major TLC. It works great now, but I know I could make it better to save myself time on the backend.
Do I Want to?
Playing devil's advocate here, do I want to do all of that? I mean, the main reason I even have all of these sites is because I love coding. I'm definitely a backend developer at heart. I suck at design and UI/UX. I much prefer working on the functionality of the sites. So by making everything modular, I would be freeing myself up to work on the frontend and content—but do I want to do that? In fact, my code is fairly stable now, so what have I been doing? Playing video games. That is, up until this week.
A Recent Project
I set up a WordPress site for my brother's new photography business but quickly realized how slow it was. The ads in the backend and basic features locked behind paywalls have gotten out of control. So, I spent the last few days building him a site with my CMS instead. Setting it up took most of that time, with the backend being the biggest challenge as I had to modify my existing code to fit his needs.
He seemed a bit put off and didn’t understand how the backend of WordPress worked. That was another reason I decided to use my system—it doesn’t have an overwhelming number of settings to confuse someone unfamiliar with admin panels. However, I fear I may have wasted the last few days. I had the site ready yesterday, told him to register, and offered to get him set up—but he hasn’t followed through yet. Once he realizes he’s listed on Google Maps and showing up in Google search results, I’m sure he’ll be back, lol.
I don’t think he fully understands the impact a website can have on exposure. Social media can only take you so far; in fact, websites should come first, with social media acting as a funnel to drive traffic there.
The Need for Feedback
I was hoping to use him as a beta tester of sorts so I would know what I needed to do to make my system user-friendly in case I ever decided to make it public. This system is my baby, so I know exactly what to do, but I need someone who isn't a programmer to test it out and give me feedback on what confuses them or what doesn't work the way they think it should.
I built this system to do exactly what I want it to do, but I need to know what others think it should do.