DEV Community

How I Built My Perfect Score Portfolio Website

Jemima Abu on March 31, 2021

I recently published the fourth version of my portfolio jemimaabu.com. With this version, I tried to make the code as performant and accessible as...
Collapse
 
mwrpwr profile image
Joseph Maurer

Cool website Jemima! Doing multiple color themes was a cool idea. Have you thought about having a different theme based on the system preference? The fade in animations are cool but are a bit slow when trying to scroll the page fast.

Collapse
 
jemimaabu profile image
Jemima Abu

Thanks :)

Yeah, I'm currently setting the default color theme using the prefers-color-scheme media query so it's based on the system preference, unless you select a different color scheme which is then stored in local storage.

The fade-in animations are set in a throttle function of 250ms to reduce the number of times the function is called while scrolling.

Hope that clears things up :)

Collapse
 
nibtime profile image
nibtime

Hello Jemina. Your website is very nice. Also, this article about your design process is very well written. Especially the parts about a11y are very useful to me, so thank you and great job! 👍

On your optimization arguments: I totally share your thinking there about minimalism and staying out of a framework (Vanilla JS). But a recent experience thought me a bit otherwise. In Lighthouse Chrome, a page of mine hat a perfect 100 in performance, and then I tested the same page on web.dev/measure/ and it was just 60-70 😲

With Gatsby 3 and Next.JS 10, I can get in the 90-100 there, but I have actually no real clue how to get there myself 😅. It has to be optimized SSG with build+asset pipeline + image optimization capabilities of those frameworks that make it happen. There are just so many mistakes to make if you have to reinvent those things yourself.

Next Analytics additionally gives you this thing "Real Experience Score", that tracks performance metrics of your real visitors over time. Nothing can beat real data like that and setting up something like this yourself is very hard and a lot of work.

Lighthouse also changed weights (web.dev/performance-scoring/) recently, so the local Lighthouse can't be assumed to be stable across Chrome versions.

This all shifted my opinion from "Stay unopinionated to optimize myself" towards "those things are way too much for me in reality and subject to frequent change, I probably shouldn't optimize myself at all and let frameworks do it". Also, a framework like Next.JS gets real-world feedback from companies like Netflix, Hulu, Twitch, and many others and can make things better based on that. It is just very hard to beat all the resources that flow into such frameworks with your own smarts.

I only use local Lighthouse to get in the right direction during development, but as a final argument about site performance in terms of user experience, it's far from enough in my opinion. You are right that just the idea behind the score matters (which is true for every single metric that exists) which is great UX, but achieving it for real is something very hard.

On a personal portfolio site, it probably doesn't matter that much though, and might be overkill. But maybe those considerations can be helpful for other projects you build in the future.

Collapse
 
jemimaabu profile image
Jemima Abu

Thanks for the feedback :D

Yeah I was trying to keep things simple with my portfolio but I'll definitely look into your suggestions for my other projects.

All the best :)

Collapse
 
pavelloz profile image
Paweł Kowalski

I highly recommend switching to mobile check on lighthouse, it will show more feedback on the page:

googlechrome.github.io/lighthouse/...

Collapse
 
Sloan, the sloth mascot
Comment deleted
Collapse
 
manssorr profile image
Mansour Koura

Hello Jemima, I like all your portfolio versions especially the last one, It's amazing !!
I have two comments,

  1. I would like the theme icon when displayed when hovering on it, without clicking.
  2. I like it if the Nav-bar moves with me to the page bottom. That's all, Thanks
Collapse
 
thuhtetdev profile image
Thu Htet Tun

I have visited your website.
It is awesome Jemima. I love it

Collapse
 
vasilisplavos profile image
Vasilis Plavos

Great job, congats 👏👏

Collapse
 
banjoanton profile image
Anton Ödman

Great content! I read some of your other articles as well, amazingly well written and very helpful. Thank you! 👏

Collapse
 
jemimaabu profile image
Jemima Abu

Thanks, glad you enjoyed it :)

Collapse
 
espoir profile image
Espoir Murhabazi

Not a front-end developer, but I like the blue color combination on your portfolio.

It is definitely something I will steal for mine...

Collapse
 
jankapunkt profile image
Jan Küster

+1 for Vanilla JS 🤩

Collapse
 
antopiras89 profile image
Antonio Piras

Amazing site! 👏🏻👏🏻👏🏻