Skip to content

matfin/personal-website

Repository files navigation

Personal portfolio and CV

This is my personal website which acts as my portfolio and CV / Resumé.

My motivation in creating this was to gain a deeper understanding of modern web development practices. I use it as a testing ground for exploring modern web development practices and technologies.

What does this project encompass?

  • dependency management with yarn and building with Vite.

  • TypeScript, which is a superset of JavaScript and includes strict type-checking.

  • React Testing Library and vitest which is what I use to unit tests components.

  • Docker / Compose is used to test builds locally before I upload them. I have a self signed SSL cert so I can use HTTPS locally, which I created with the help of this excellent guide.

  • I implemented a content rendering engine that reads in a tree of items from JSON files, then chooses the correct component to render as the JSON is fetched.

  • For state management, I use Redux Toolkit. This makes managing complex async functionality much easier and readable.

How to install and run this

To get this running, you should have an up to date stable version of NodeJS. I am using 20.12.2. You should also have the most up to date version of Yarn installed globally.

  • $ [email protected]:matfin/personal-website.git to clone this to your local machine
  • $ cd personal-website/
  • $ yarn will install dependencies
  • $ yarn start will build the server and client and watch for changes
  • $ yarn deploy will generate the site as a static bundle, which is output to the /dist directory.
  • $ yarn checks will run unit tests with coverage, code lint and style lint.

Where does this run?

On all modern web browsers both mobile and desktop. Internet Explorer is not supported.

How is this deployed?

For CI (continuous integration), a very popular and well documented tool called CircleCI is used.

I have a script that generates all content and assets, then a CircleCI config that deploys this to a remote server.

What are the nice to haves?

I have documented these in the Tech Roadmap and will keep working on them.