< fatalus />

Source

This project is built on plain PHP. The core App functionality is very similar to the one I used in my Server Dashboard the only difference here is, that I extended the underlying "Framework" quite a bit to fit it the requirements for this Project.

As an example I implemented my own custom templating Engine, highly inspired by my favourite one, Blade. Even though mine is still very feature poor, I implemented a basic rendering concept, that allows me to propagate variables into each template from predefined HTML files, so those only exist once throughout the whole Project. Examples for this would be the header aswell as the footer.

CSS

Additonally to that I serve my CSS styles very untraditonally. Instead of using a build tool such as Vite, I stuck to my zero dependency approach and "bundle" my CSS files via SSR into one single PHP File. But of course, this approach removes all the benefits such build tool brings, such as compressing and minimizing the sizes of the CSS file, which is being served to the Browser. This problem has been compromised by minifying the CSS as much as possible, only lacking the capabilities of gzipping it as of now.

Caching

Another big point in this Project is Caching. Page loading speed is something that is quite important to me. Therefore, the biggest pages, being the sub-pages of the Projects aswell as the previously discussed CSS are being cached permanently and will only be cleared when neccesary. The proccess behind this is very simply, on each page load we check if a cached file exists, if not it renders the page normally and caches that page content into a file. When the page is opened for the second time, it will take the page content out of the cache and won't re-render the page as a whole.

Sitemap

Another thing, I did was an automatic Sitemap generation. Many people probably agree, that this is a very annoying task to do manually. For this purpose I'm generating this automatically. This is very much bound to my custom Routing Engine, as it takes all the defined routes, resolves the wildcard Routes used for the detailpages for my Projects and then writes all of them to the XML file. Quite simple, right?