There are two main parts to avojak.com - the “home page” (avojak.com), and the blog, which is where you are right now!
The avojak.com website is a single Express + EJS application. I started out with the sticky-footer-navbar Bootstrap template, but after making lots of changes it’s not really recognizable as that anymore. I’m certainly not a UI/UX expert by any means, but my goal was to create a simple yet aesthetically pleasing interface.
After a lot of trial and error - which could be an entire blog post - on a couple of other hosting platforms (Firebase, AWS), I ultimately chose Heroku. Deployment is simple with the pipelines feature:
- Push code to GitHub and your application is automatically built into a staging app.
- When you’re satisfied, promote to master.
I chose Ghost as my blogging platform because it’s free, it has tons of easy-to-use features right out of the box, it’s easily customizable, and there are plenty of hosting options. I started out by self-hosting on a Raspberry Pi, however I came across a handy GitHub project which deploys Ghost to Heroku with the click of a button. Since Heroku has a free tier 1, it was a very easy decision to switch.
Even though Heroku is the primary hosting platform, Ghost still leverages AWS S3 under the hood to store data, such as the screenshots in this post.
For the UI theme, I started with the default Casper theme, and then forked it to make a few minor customizations.
GitHub: ghost-on-heroku (A fork), Casper (Also a fork)