I finally managed to put together a new portfolio website to generate leads for business as well as showcase my professional and personal projects.
You can find it here — gargs.nl
I initially started with a WordPress theme, which wasn’t really that hard to setup on a new server as DigitalOcean makes it really easy to setup a VPS with the entire stack pre-configured. The only things that need to be done post-installation are setting up the private keys for remote login, disabling password-based logins, setting up the sudo-ers, and configuring LetsEncrypt. The hardest part is actually picking a theme and setting it up to your taste.
WordPress uses a database. It is PHP based. For a portfolio website which doesn’t really change that often, I figured that setting up a server with a database was really overkill. You also get an elegant editor, but it is not going to be used often. Finally, PHP has quite the learning curve.
It is then that I started looking at static site generators, and Hugo in particular. The first step is running a terminal command to setup a new website that creates the directory structure, followed by (usually) cloning the repository for a theme that you want to use. You also get the flexibility to use multiple themes for any particular site. The best part is that being templated, your website grows gradually in the form of git commits. This also gives you the flexibility to tweak the theme by just forking it. The theme I picked is quite simple, yet elegant for a portfolio website.
I also got into a bit of designing while building the website. The demo website using the theme used a lot of SVGs, and I decided to use some of my own. Turns out that SVGs are great for websites. They are vector-based which means that they look amazing on Retina displays. I wonder why websites just don’t use them for everything that isn’t a photo.
Uploading the website to the server is also just a matter of using scp or rsync, depending on how big your website is. There are even entire hosted workflows to automate this part — you push a new commit that triggers a new build of the website that triggers a new sync. It really can’t get any better than this!
Give my website a look and send me any feedback!