For those who follow me on Twitch, this theme is familiar to them since 2018 but it was only in 2021 that it went live.
Why so long? Here's a year-by-year recap.
2018, Unreal Dev Grant
In 2018 I received an Unreal Dev Grant which made me decide to give the site a makeover.
So I get in touch with @mr_durian for the new design and @monsieurm for the frontend, besides I think about the technical future of the service.
It is necessary to know that the site is under Wordpress because I needed a fast, reliable solution and also because I used it at work. But with the time and the updates, I was afraid that it would be unstable because I didn't read the release notes anymore.
In the end it became a source of anxiety because I didn't know if the automatic update would break something or not. This was the case one day with the creation of blueprints on the storage which did not work anymore because of an update...
So I wanted to change the site and I asked myself the question: "Which language and framework should I use?"
First, I want to stay on PHP because the current hosting is cheap, reliable and only supports PHP. Also I know this language very well because I have many years of experience with it. I don't want to use Node.js and switch to another hosting provider because I would have to rent a VPS and maintain my whole middleware stack.
The question of the language being settled, I look at the big PHP frameworks : symfony and laravel.
I don't like these frameworks, I find them heavy because they use too many dependencies for my taste, such as backwards compatibility for PHP5. They even have sometimes compatibility issues between the dependencies I wanted to use such as phpunit. For me it was a no go.
Finally I look in my GitHub and I see that I had already created some frameworks. So I decide to start on a 100% self-coded base. This implies that the quality must be there, which leads me to write complete unit tests for each module. And also I add another constraint, that of being compatible only with PHP 7.2 minimum.
After a few months I finished my PHP modules, so it was time to put them together for the frontend integration.
2019, Why not React or Vue.js?
I asked myself this question and after much thought, neither was suitable.
Because in fact blueprintUE is a simple site, almost static, with few pages and I don't see the point of using them. On the contrary, I see a possible conflict with the blueprint rendering system.
Continuing my reflection I say to myself that I should also remove bootstrap because the grid system is now accessible via flexbox and css grid. Also I have to remove jquery because I refuse to support Internet Explorer and that's the main reason why I use it anyway.
2020, tests, tests, tests...
I finished the frontend integration with a clean base, without superfluous, nor polyfills and a lot of tests. Then I resumed the integration of my PHP modules. By the time I learned PHP 7.4 was available on my host so I had to update all my modules along with my unit tests. I have also created tests for PHP 8 to avoid technical debt in the future.
Once done, I worked on the architecture of the site from a backend point of view, which evolved as each page was integrated.
In the meantime, I wrote the e2e tests of each page/form to be 100% sure to have no problems once in production.
I wrote tests for database's state and file system before and after each test, as well as html return, especially for form errors. For information, there are currently 1241 tests just for the backend.
With time, the support of the development tools I use are EOL and I have to switch to WSL2 to embrace a proper environment. This is when @crazymax brings his help to set up a clean and usable Docker and also to structure the project.
We have created a Github organization for blueprintUE and setted up Github actions which are launched at each pull requests in order to have a CI/CD. We port the project to Docker and deploy a version on a VPS as a staging environment.
Apart from that, I wrote a migration script of the Wordpress database in the new data schema.
It's 8am in Paris when I decide to put the site in maintenance and after 30 minutes migration is done \o/, users can use blueprintUE again.