Everyone needs a hobby, right? I write code for living and I love it. I have the amazing oportunity to build open source software Mautic as my day job. That's something I didn't think was possible a few years back. I was lucky enough to get this opportunity. But building and maintaining open source software have its drawbacks from a programmer's perspecitve. Like that you have to build it with standard technologies like PHP and MySql so users won't have problem to host it themselves. Or that maintainers have to be carful with backward compatibility which makes the progress a bit tedious.
That brings me to my hoby coding project, Cronfig.io. It's not an open source software, but a service. Its goal is to help Mautic users to get it setup easily and keep them informed about the background jobs and if something goes wrong. I don't have to worry about ease of server configuration for users or that there are no web hostings where this app would work. It's under my controll only. And I can learn and use the latest technologies. Which is the fun part for me.
So what technologies did you use to build Cronfig? I'm glad you asked! It's all build in Javascript!
Eh, right when I typed that sentence I realized how boring it sounds. JS is far from latest technology. It is with us for several decades. Let me try again.
For the backend I chose to use NodeJS. It's Google's V8 runtime for running JS on servers. It's the same runtime Chrome browser use. As database Cronfig use MongoDB, which use JSON documents to store data. The "JS" in JSON stands for Javascript too, so even the database could be considered to be part of the JS stack. This database belongs to the NoSQL family of databases so it's again quite different from relational databases like MySQL. New tech to discover, yey!
And for the frontend Cronfig use the amazing ReactJS library build by Facebook with virtual DOM, JSX, live reload and all that cool stuff.
Did that sound less boring? Probably not, but it's exciting for me! It's totally different technology stack than building Mautic. Even the programming paradigm is different. PHP is great for object oriented programming. Well, the new versions of PHP anyway. And JS is quite bad language for OOP, but it's quite good for functional programming. So learning just those functional principles is interesting and fun. Whole new world to discover!
This probject forced me to learn how to configure a server for this JS stack. Some workers are also running on Heroku, so that's different process of deployment compared to VPS. I'm looking towards looking at serverless servicess as it seems it would be great fit for hosting some parts of Cronfig too.
Recent news
I enjoyed building this simple service at evenings and weekends. And Cronfig is helping people. That's the purpose of every software. There is no other reason to build software than solving some problem people are having. I recently built the functionality to upgrade from the free plan more powerful plans so users could help me with monthly maintanance costs. Although the first few payments I invested back in the project to the professional logo design. But the next will go to cover the server costs, I promis ;)
There is new website with documentation and the main website is going through complete redesign. It's mainly done, I just have to test it and release.
The future
I have actually quite big plans for Cronfig. Mautic users still have some problems that Cronfig could help with. I'm currently working on server monitoring feature. I already built a PHP library for this purpose so it can be used in the Mautic plugin but elsewhere too. Server resource monitoring feature is comming soon to the Mautic plugin.
The big feature I have in my head is automatic Mautic backups. From the new technology standpoint I'm looking at replacing REST API with GraphQL.