caption="For the front end of this project, I went with [Vue.js](https:/etcvuejs.org) — a fast, modern JavaScript framework used to create web interfaces."
alt="The October Content Management System's icon."
class="icon-inline sm-order-rev"
caption="For the backend I decided to use [October](https://octobercms.com/), a Content Management System, based on the [Laravel](https://laravel.com/) framework, which is a popular, open source, PHP based framework."
It would be possible to create a fully bespoke image based CMS to handle these requirements.
However, this would involve a considerable amount of work and a lot of considerations, such as security best practices, browser compatibility, testing of code, etc.
This makes it faster than some alternatives, such as WordPress for example, which can suffer from having a large amount of features included as a base.
It also has useful default features such as minification of CSS and JavaScript. The templating engine, Twig, generates static HTML, giving the speed benefits of a static site, without database lookups.
It is simple and straight forward to customise the administrative interface.
This is very useful for a site that will involve a lot of users with the ability to manage their accounts and decreases development time substantially.
caption="WordPress is very good at what it actually is -- a platform that allows users, who may have limited technical ability, to publish a website. For this it is very successful, after all it powers [over 30%](https://wordpress.org/news/2019/03/one-third-of-the-web/) of the world's websites."
Combined with its start as a blogging platform, with CMS features bolted on over time, this can make leaner, more focused alternatives more appealing to developers.
The website is hosted on a Virtual Private Server using [Docker](https://www.docker.com/).
The main advantage of using Docker containers in this case, is in how it simplifies development and deployment.
Using containers ensures the development environment is identical to the deployment environment.
The Dockerised services we require, are simple to set up and having these services isolated in containers, we eliminate any issues caused by conflicting services or other aspects of the environment.
Deployment is also simplified in that the containers can be easily pushed to production servers.