How I built danielbate.com

Discussing the tech and services that helped me build, maintain and deploy this blog

By Daniel Bate

27 Feb, 2021

A portfolio site is important for any aspiring developer. It is often one of the first things that you will be judged on as a developer, so having a strong portfolio site can really set you aside so you shouldn't rush it or see it as just something that facilitates your portfolio projects.

Personally, I wanted something that could act as a personal website, portfolio and as a blog. There is a lot of software out there that can do each of these very well but is often quite opinionated. Fortunately, as a developer, I am am able to build something that suits all of my requirements but there is a lot of tech out there to choose from, so here is what I use and why I've used it.

My site is driven by Nuxt, a framework for Vue. One of the earlier iterations of my site was built using Gatsby, a static site generator (SSG) for React. I fell in love with JAMStack but after recently deciding to commit to Vue as my primary JavaScript framework, I had to look for a new SSG that supported Vue. I found Nuxt which supports server side rendering (SSR), SSG or SPA, so it seemed like a really strong choice as I could adapt it to different projects. The benefit of Nuxt is that it comes bundled with Vuex and Vue router, so getting projects up and running is a really quick process. Couple that with a statically generated site and you've got a really quick development process.

One of the reasons I really like SSG and JAMStack is so I can deploy the site on Netlify. Netlify is by far one of the best hosting providers that I've used. I deploy my JAMStack sites straight from GitHub, can set up a web hook so it rebuilds with every code push (same with my headless CMS), get a free SSL certificate, get an endpoint to submit contact messages to, and I'm yet to pay for anything on Netlify. It has by far one of the best deployment processes that I've experienced.

For my mailing list I am currently just directing users to a MailChimp contact form which allows me to pass a name and email as parameters and it pre-populates a form. Soon I'm moving to hosting that supports SSR (probably Heroku), so I'll be integrating mailing list submissions into my own application

To manage my blogs, I use Cosmic. Cosmic is a headless CMS, therefore it provides an endpoint that I can query with GraphQL to retrieve my blog content. I can then couple that with Nuxt to build pages straight from Cosmic. I love this approach to manage content and try and stay away from bespoke solutions with content management where possible.

Hopefully this gives you an insight into how this site was produced, and please get in touch if you have any other questions!