History
Know the history behinf the creation of HyperFluxCMS
With so many CMS systems on the market, many of them free (more or less), why create another one? What are the advantages? What would be different about it? See here.
There are currently several CMS systems available on the market, and many of them claim to be free. Some are full of features, have a large user base, and are even used by major portals. So why dedicate time and effort to create another one?
Well. A little over a year ago, I never imagined that I would one day be launching a CMS developed by me and my team. I've had experience developing other free, open-source software. But not in a project as ambitious as HyperFlux CMS.
It all started when I decided to create a website to share ideas and projects developed by my company, partner companies, and occasionally some other project from another person or company that authorized me and that I found interesting for the public. Ideas and projects about 3D design, apps, products, electronic equipment, hobbies, etc.
I heard that Wordpress was "the guy". Practically every place that offers website hosting services has support for Wordpress. Major portals use it. Many famous sites use it. It's free. It has a huge community of users. It has hundreds of "plug-ins" and thousands of themes.
"You convinced me. I'll develop my site using this thing!", I thought.
I downloaded and installed XAMPP to start developing my site locally. I downloaded and installed Wordpress. Ok, it was easy.
The next step was to choose a theme. It's not so easy anymore. There is an ocean of themes. But at least 95% of them are themes for static pages. That is, you create a page with text and images and leave it there forever. Whenever you have an update, you have to edit the page.
This model is sufficient for many companies: law offices, aesthetic clinics, accounting firms, hotels, bakeries.
But it wasn't what I was looking for. I was looking for something more dynamic, like a news portal, with several articles already on the home page that could be easily updated every time an article on the site was created or edited.
Among the universe of themes, very few, I'd say about 5% or less, fit this profile that I needed. Ok, I found one that I thought was cool, installed it, and that was it.
Then came the first disappointment. The vast majority of themes have a free version full of limitations (for example, you can't change colors or fonts, etc.). And to be able to use something beyond the basics, there are also monthly or annual fees. And they are not cheap, potentially reaching hundreds of dollars per year.
I thought that with the free basic plan of the theme I chose, I would be able to launch the site I wanted.
Then the torture began. The Site Title? You can't change the font. The subtitle? Neither the font nor the size. The size of the footer image? No way. The size of the article "thumbnails"? Not even dreaming.
Even so, I kept insisting. I thought that by peeking and looking at the HTML and CSS files (many dozens of them), I would be able to find where I could choose the font, the thumbnail size, etc.
It was a free sample of hell. I clicked on the page title, "inspect element", and it belonged to 36 different classes. I tried to find in which of these CSS classes it was defined that it started 49 pixels after the right margin, when in fact I wanted it to be 16. Then I found some place, changed it, and it had no effect. Then I found it in another place and another, and it didn't work. Until I discovered that the position was calculated by a CSS function "calc (this plus that minus that other times 1.2 minus 2.7% of the parent div, plus 2% of the page width...)". And then when I managed to change it, it ended up misaligning other elements that were previously in the position I wanted :(
To make matters worse, the CSS declarations that determined the position of one page element use different formulas and calculations from another. I wanted the site title to be aligned with the text. But while one of them used "2% of the page + 27 pixels + 20pt - 1.5em", the paragraph text used "32 pixels -2.5em +1% of the window width". Things like that. As a result, a page that looked beautiful at 1024p resolution with 100% zoom became completely misaligned under any other condition.
To make matters even worse, many of the JavaScripts and CSS that the system loaded were external. A multitude of them, making it even more difficult to understand and adjust the properties.
In short, positioning the elements, defining the sizes and fonts I wanted took me A LOT of time and several boxes of anxiolytics and antidepressants. And even then, they didn't turn out the way I wanted, but they got close to acceptable.
Ok, with the site more or less looking like what I wanted, time to add functionality. Maybe an image gallery. Cool, Wordpress has plugins for that. An advanced search. On the Wordpress site, there are also plugins for that. A carousel? There's a plugin.
Second disappointment: Just like themes, most plugins are very limited or didn't serve me. But... by paying monthly fees that can reach dozens of dollars per month, the heavens would open and my dreams would come true.
No. I would not accept paying several hundred dollars per year to maintain three or four features of my site that had no expectation of financial return.
I gave up on the functions I wanted and moved forward using only what was free.
"Man, everyone uses this damn thing. It must be good," I thought. "It's not possible that I'm the only person in the world who wanted this or that feature on a site without having to sell my internal organs. Someone must have already made something similar to what I expect work," I thought.
I don't even remember exactly what I was looking for; I think my mind blocked the memory to prevent further trauma. I think it had to do with a search system or making an interactive menu.
I searched, searched, searched, and couldn't get it to work the way I wanted.
I went looking for help in the Wordpress community forums, like the one on StackOverflow.
Panic. Pain. Despair. Humiliation. Apparently, it was possible to do what I wanted... if I messed with the Wordpress source code. That means messing with the source code in PHP.
The PHP language is known to be one of the most heinous ever created, almost a crime against humanity. The PHP language is like a mischievous, sleepy five-year-old child. Whoever created it loves it, whoever has known it since childhood says "oh, he's good, you just have to know how to deal with him", but outsiders can't stand it and feel like pushing him into a very deep, dark, damp well.
I save my quota of hatred for Javascript. I've used classic ASP. And I'd rather lose the tip of my big toe in an embarrassing accident involving a goat, a peanut cake, and a traffic sign than spend my time and effort learning ANOTHER interpreted, untyped language (especially PHP), especially if it was just to make a little website.
I resigned myself to not having the feature I wanted. I continued working on the design and content of my site.
After more than a month using all my free time, Saturdays, Sundays, holidays, and late nights working around all of Wordpress's limitations to finally have a site that reached 90% of what I wanted, I was satisfied.
I started creating the content pages and images for my site. I created about two dozen content pages. Using the server I installed locally. Then I thought: How am I going to upload this to my site?
Then I remembered that Wordpress uses a typically MySQL database. Ok, an open source and free database. Whoa. But what if there are also tricks and fine print like the themes and plugins?
I checked and... phew. There are corporate ultra-mega-power versions of MySQL, but that wasn't a concern for me. The free version would be more than enough for my purposes...
...If it depended on Oracle (MySQL's current maintainer). But NOT on hosting providers.
Looking at the hosting plans of most providers, almost all offer a free MySQL database. But. with. several. limitations. Some limit the size of the database, others limit the number of databases, others even limit the number of records in the database.
For example, some hosting plans offer 50GB of site hosting, but of that, only 1GB can be used for MySQL. Others limit the number of simultaneous accesses to the database, which means that, for example, only 10 users can be accessing your site at the same time, and if another one enters at that moment, they will be greeted with a horrible error message.
Again, I resigned myself to this limitation. After all, I didn't have great ambitions for my site.
I then decided to upload my site's content to the hosting server. But... how to do that?
I'm an old-school developer. I've used dBase and Clipper. MySQL shouldn't be that different. Somewhere on my PC would be the file, or half a dozen of them, with the database that would store the content I had created with so much effort. But where?
Since I used XAMPP Portable, I searched the internet and found the location of the files. In my case, "E:\progs\xampp\mysql". Cool. It would just be a matter of finding the files used by Wordpress and uploading them to the site.
I opened the folder and again felt pain and despair. More than 400 files divided into about 40 folders. And there would still be the work of discovering where these files would go on my server, if I would even have access to them.
I saw on the Internet that this wasn't how it was done. The database should be exported via command lines or migration applications, then on the server it should be imported similarly via command lines or tools, so that finally, my site would be live. Oh, disgraaaaace!!!
Again, like a sinful soul condemned to purgatory, I accepted the sad destiny that is the damn hard work that a poor guy who just wanted a little website has to go through.
But not today. Before taking on this new task, I decided to take some time to rest. And before wasting time publishing, I decided to ask friends and family for their opinion on the site's appearance, only then to have my dreamed-of little website.
I stepped away from the project for a few days to return to my main job.
I swear that during this period I didn't touch anything on the site, not even the files in the folder where it was located.
On the day I was going to upload the site to my hosting provider, I reviewed it and... TCHARAMM!!!
The site was completely disfigured. I don't know if it was an automatic Wordpress update, some repair system, some system component that reverted or corrupted the HTML and CSS files I had adjusted with so much care, if it was one of the zillions of files hosted on external sites that Wordpress and its themes use... I don't know. I just know that it looked like the site had been run over by a train. And that the train went in reverse to make sure it was really, truly destroyed.
I cursed Wordpress so much, its creators, those who promote it, those who say it's the best thing in the world. I cursed so much that I had to invent some new swear words. I cursed up to the fifth dimension, because there were no terms strong enough in any human language to describe my hatred.
That's when I gave up on using Wordpress for good.
Ah, but there are other famous CMSs, like Joomla and Drupal, right?
Yes. But the trauma and hatred were so great that I decided not to risk losing more time and soul to risk everything happening again. That's when I decided to create HyperFluxCMS.
HyperFluxCMS would be created to be truly free (no fine print, no feature limitations), with open source code, completely self-contained (without needing to use CSSs, fonts, and javascripts from external sites), and lightweight. Very lightweight. Both in server-side execution, but mainly for the site visitor, who often accesses it from somewhere with slow and poor internet and doesn't want to wait several seconds for the site to load dozens of files, javascripts, css, fonts, from several different sites.
What about the language? As I said, I didn't want to learn PHP. And I decided that I wouldn't use it. I decided to use a different environment, even if that greatly limited the system's use.
Since I had a lot of experience in C, C++, and C#, I decided to use the latter as the basis for development. As a result, my CMS would have exceptional speed compared to interpreted PHP, but with limitations of only running on Windows servers.
Theoretically, .NET Core 8, used as the basis for the initial project, could be installed on Linux servers and run HyperFluxCMS, as long as it had .NET Core 8 installed compatible with the platform. But I prefer not to count on that. Someone might try to get it running on Linux servers, but I wash my hands of it.
Unfortunately, the vast majority of hosting providers in my country (and also all around the world) use Linux servers. This greatly limits the audience. Even so, I decided to stick with the Windows/.NET choice because of the speed of programs created on this platform, the fact that C# is compiled and thus can detect most errors and bugs during development, and also .NET Core's native support for various features that HyperFluxCMS would need, such as image manipulation and database handling without having to rely on the goodwill and reliability of external code developed by third parties.
I also chose to use the SQLite database. My tests proved that, in a well-planned and executed project, this configuration allows maintaining a site with many tens of thousands of articles with acceptable performance, which is sufficient for the vast majority of applications for which HyperFluxCMS is intended.
Furthermore, using the SQLite database has the advantage of being extremely simple to back up and also to migrate to another server, if you conclude that your site's hosting provider is not being satisfactory. Content, posts, settings, etc., are stored in a single file.
I also decided that user articles/pages/posts/publications would not be created using drag-and-drop blocks, but rather using some markup language, to allow some functionalities that would not be possible or reliable in a "drag-and-drop" interface: the possibility of creating and editing content offline, on any computer, to publish later, and the possibility of copying and pasting content from one post to another, including between different sites.
And so, after many months of work, HyperFluxCMS was born.