How to Make a (Free) Data Science Portfolio Website With GitHub Pages

5 easy steps toward your next data science role

Shaw Talebi
The Data Entrepreneurs
6 min readApr 29, 2023

--

By the end of this article, you will be able to create your own data science portfolio from scratch using GitHub Pages.

Technical Skills Aren’t Enough

Getting a job as a data scientist is not all about your programming and ML chops. A big part of getting hired is selling yourself.

Unfortunately, this tends to be a big weakness for data scientists because we don’t typically focus on this skill set in our formal training or day-to-day work.

I was definitely in this boat when first looking for data science roles. However, one simple thing that helped me get my current job was making a portfolio website.

Aesthetics Go a Long Way

A (pretty) website helps you stand out and gives you credibility as a professional. It gives employers a landing page to learn more about you and your experience.

While this all sounds great, if you’re a data scientist like me, then web development is probably not your strong suit (as can be seen in the screenshot below).

What happens when a data scientist makes a website. Image by author.

GitHub Pages

Lucky for us all, our good friend GitHub has a solution for this. GitHub Pages is a built-in function that lets you host a website from a GitHub repository for free! Furthermore, GitHub Pages is equipped with a package called Jekyll which automatically translates your repo’s README.md file into a pretty website.

Recent UI change

I used GitHub Pages many times in grad school (2019–2022) to spin up project websites and my own portfolio. However, there was a recent change to the Pages user interface, which made the process a little different (and less convenient) than what is described on the GitHub Pages website.

More details on UI change in YouTube Video 🎥

While their outdated instructions sent me down a rabbit hole for a few hours, I finally nailed down a quick and easy (no-code) process for generating a portfolio website.

Here I break it into 5 easy steps, so you don’t have to struggle like I did 😅.

Step 1) Create GitHub Repo

The first step is to create a new GitHub repository. An easy way to do this is: go to your GitHub profile > click on Repositories > click the green New button.

After doing this, you should get a screen like the one below.

Example GitHub repo configurations for a portfolio website. Image by author.

The first thing we need here is to set the repository name. This is important because it will dictate the default URL for your website. There are two options here.

The first option is to use username.github.io. For example, my user name is ShawhinT, so here I would type: shawhint.github.io. With this option, the repo name is identical to the website URL.

The second option is to use any name you like. For example, I can name the repo portfolio. Then my website URL will be: shawhint.github.io/portfolio.

Next, check the Add a README file box. Then click Create repository.

Step 2) Create _config.yml File

The second step is to select a theme for your website portfolio. Before the Pages interface change, this consisted of picking a theme using a built-in GUI.

However, this is no longer the case, and we now need to pick a theme via something called a _config.yml file. This file tells Jekyll how to take the text from our README file and generate a pretty website.

To make a _config.yml file, create a new file in your repo, as shown in the screenshot below.

How to create new file in GitHub repo. Image by author.

Now name your new file, _config.yml, and add the following contents to the file.

# add the following to _config.yml file
title: YOUR NAME
theme: jeykll-theme-minimal

Here I pick the “minimal” theme, which I like best for a portfolio. But there are other supported theme options. A full list of them can be found here: https://pages.github.com/themes/

Example config.yml file. Image by author.

Once that’s done, commit the changes.

Step 3) Fill out README.md file

The third step is to fill out your README. This will become the content of your portfolio website. For now, we can put in basic information but will return back to this later.

The screenshot below shows a basic example of some initial content.

Example README.md file content. Image by author.

Once you have some basic info down, commit the changes.

Step 4) Build and Deploy Website

With the _config.yml and README.md files in place, you can deploy your website. To do this, go to your repo’s settings.

Location of setting tab for GitHub repo. Image by author.

On the left-hand settings panel, click on the Pages option. Then, select the main branch as your deployment source and hit Save.

How to deploy website from main branch. Image by author.

Now, we can check the deployment status by navigating to the repo’s action tab. Once you see the green check next to pages build and deployment, click Deployments on the left panel.

How to check deployment status. Image by author.

You’ll reach a screen that looks like the screenshot below. From there, simply click View deployment to go to your website.

How to view website deployment. Image by author.

Below is an example of what you should be seeing. It is bare-bones for now, but I find it helpful to run through the whole process before going back and filling out the website content.

Bare-bones version of portfolio website. Image by author.

Step 5) Customize & Fine-tune

Now that we’ve seen the whole process, you can go back to your README.md file and customize your portfolio. If you want some inspiration, take a look at a finished example portfolio available at the GitHub repo below👇

Final product: https://shawhint.github.io/example-portfolio/

Feel free to steal the code and fill in the portfolio with your own experience. My initial strategy was to copy-paste content from my LinkedIn profile and resume.

However, in the next blog of this series, I will discuss how to make a data science portfolio that will get you hired.

In the meantime, if you have questions on this or a career in data science, feel free to reach out 😁.

--

--