Portfolio Website

You're looking at it! This site showcases my favourite projects accompanied with a write-up of each one. Built with React and Markdown, and powered by Next.js. And guess what? It even generates my resume!

Contents

Key Points

  • This was a rebuild of my 2019 website, introducing a fresh design and adding more features. I even leverage it to generate my resume to match the site's look and feel.
  • Built using Next.js and its ability to render Markdown alongside React code. The site also uses p5.js for the face animations, and Framer Motion for the interactive timeline.

Features

  • An interactive timeline that showcases my project and work history.
  • A collection of articles that highlight my favorite projects.
  • My resume that's dynamically generated as part of the website.

The Tech

Site

  • It's a standard Next.js site but utilises the MDX features to blend React and Markdown. This allowed me to retain almost all content from the old site.
  • I employed P5.js for the head animation, and Framer Motion for interactive elements. The timeline, in particular, uses Framer Motion to smoothly expand and collapse content.
  • I use ContentLayer to manage my project articles. It lets me validate meta data (called 'frontmatter') with Typescript for each article, enabling me to safely run scripts against my articles - e.g. to generate article tags.

Resume

  • One of the coolest features of the new site is the ability to generate my resume using Next.js/React/CSS. I've always found designing my resume in other programs to be frustrating, and thought that using web technologies might be a fun solution. So far I'm happy with the results.
  • Using the same tech stack lets me reuse elements (like the generated face), fonts, colours, and more. It also encourages me to keep the site updated whenever I tweak my resume, and vice versa.
  • Moreover, coding my resume allows me to customize content for specific companies. I can display custom text and images (like the company logo), and generate unique links that display the same content on the website when they visit.