This Website

This website has come a long way since its inception. The current version uses:

I started the site using Adobe Muse, but that's a GUI cop-out really. A programmer should code his own website. Eventually I switched to a statically-served Angular 2 application with file hosting and domain provisioning from GoDaddy.

After my time working in Slovakia, I became more comfortable with Angular 2 and backend design. So I rewrote the Angular 2 app with better practices this time, as well as a CRUD Rails application to service the app and easily update the website content. Both are hosted on an Amazon EC2 instance (the backend on a different subdomain), so then I could ditch the somewhat expensive GoDaddy file hosting.

trevphil_be

The Rails application is JSON API-only (it does not have templates or HTML) and works with Active Model Serializers and basic token authentication. It was deployed via Capistrano 3 (boy was it a pain to deploy for me and my novice server setup skills) and uses nginx connected to a Puma socket on the server-side, plus PostgreSQL. Probably in the future I'll start using Docker and Kubernetes, especially if the traffic grows a lot.

trevphil_fe

The Angular application relies heavily on flexbox layout, Material Design (which is awesome by the way), and the Angular CLI. Techniques used include:

  • Modular design
  • HTTP interception (to insert auth tokens on API calls)
  • Reactive forms
  • Pipes (specifically, adding CSS classes to the dynamically insert content retrieved from the backend)

Having a backend and a frontend allows me to run my own CMS. I originally maintained the content of posts in HTML using Quill editor, but once I discovered the miracles of markdown, it was an easy switch. These days all of the posts have their content in markdown and are rendered in HTML by Angular.