In the beginning
Do what you have to do because your project will not build itself. I had to get up and shake myself even though my schedule is sometimes crazy to create this app. I had a couple of things to consider, like the colour theme, the app's purpose, the stack to use, the domain name and how to deploy the application to production. This blog post will share my thought process from start to finish.
The Process
One of the first things I did was to create sketches of what I wanted the page to look like; you can use a couple of tools like AdobeXD, Figma etc. The choice depends on your taste or what makes sense to you at the moment; as for me, paper and a pen were all I needed at that moment which brings me to Django, a python web framework that makes it easy to build web apps with less code from the ground up, Django was my framework of choice because it comes with all the batteries included to create a content management system, I stumbled on wagtail sometime in 2019 and decided to adopt it for this project as it provides a different admin backend and a beautiful admin UI, and yes, you still need to write some lines of code to use it.
To create a good UI/UX experience, some folks would usually consider the colour themes and fonts they intend to use. For this, Google is your friend; I checked out a couple of designs online, some websites here and there to figure out what to use. I was a bit slow here, to be honest, as frontend work is not exactly my strong forte, but I was able to get some ideas with due diligence.
Let us build
Patience is a virtue; I took some time to understand how wagtail integrates with Django from their documentation page and built along from reading their docs. I created a private Github repository, started the Django project for the app, made changes as I tested, deployed a staging version to Heroku for testing and eventually moved over to Digital Ocean using Ansible and Terraform as the Ops tool.
Between AWS S3 and Digital Ocean spaces, I had to choose where to store media images for the app; and that is considering the cost of usage per/month as Digital ocean was an excellent fit for me; S3 is also a good option but didn't necessarily fit into my requirement in terms of cost, mainly because AWS S3 charges are based on GET/PUT request made to their bucket per time.
With all that said, I have made some adjustments and changes to the application based on feedback from friends and from using the app myself, and for those curious to know the tech stack used to put this fine piece together, here we go:
- Python/Django
- HTML/CSS/JS
- Docker/Docker-Compose
- Ansible
- Terraform
In a future post, I will document the details of implementation, perhaps using a simple non-related project for the use-case, so watch out for this space.