He recently decided his previous (and rather imaginary) website, whose purpose was to showcase his work, was beginning to look dated. He decided that it was time for a more modern, up to date portfolio site.
Being a photographer's portfolio site, the requirements are fairly basic.
Aside from the portfolio items, we just need some brief background information and an outline of the services provided along with a contact form.
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.
The major requirements of a backend for this type of project is simply to store and organise images.
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.
In this case, I chose **October** for a number for reasons.
* **Performant**
October isn't bloated with unneeded functionality.
It instead provides a base in which features and functionality may be added if required.
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.
High quality documentation and a clean and modern codebase makes it easy to extend and add functionality.
Plugins are entirely separate - have own database and namespaces preventing conflicts between them.
The templating system and text file based website structure allows for separation of data and presentation and gives easy version control management.
* **Community**
There is a large developer community.
This means a large number of plugins and themes provided by the community. Not as many as WordPress but many of the WordPress plugins can be considered to be poor quality, particularly among the free ones.
It can also be difficult to extend WordPress plugins.
* **Secure**
Relatively secure when compared to alternatives like WordPress.
There is a single point of entry into the application, with only one file that can ever be accessed - `index.php`.
This reduces the attack areas available.
There is also more rigorous approval process for plugins and themes, that with some alternative platforms.
Each plugin and theme available must undergo a strict verification progress.
* **Customisation**
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.
So, these reasons are why, in this case, I consider a platform like October to be better for building a backend CMS than, for example WordPress - it is easier to customise and add the required functionality without the inherent bloat of some alternatives.
It is a very high profile target with a lot of effort expended in finding exploits and vulnerabilities.
That, combined with its start as solely a blogging platform, with CMS features bolted on over time, 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.