Skip to content

How is your portfolio built?

iam_timsmith profile image Tim Smith twitter logo github logo ・1 min read  

My portfolio site has gone through several different iterations. It started as a plain html site, then moved to WordPress when I learned how to build themes. For the past few years, my portfolio has been built with Gatsby and has been served by Netlify.

How is your portfolio site built? Show me your portfolio!

My Portfolio:

twitter logo DISCUSS (313)
markdown guide

I built mine using React and hosted on Github pages. I also have a Slack hook to get notified every time when someone visits or clicks my contact links.



I think the animations help with that a lot

They help to kill fps too ;) I dont remember last time ive seen frontend portfolio skipping frames while scrolling ;)


I love your portfolio! Holy cow what a fun experience.


Thanks Victoria ☺️
Your appreciation means a lot to me.


Can you recommend any resources for UI design or front-end development to get to your level? Some cool stuff man!


UI design inspirations: Awwwards, Dribbble, Uplabs and Pinterest

Front-end resources: FrontendMasters (for JS and React), (for CSS) and YouTube


I like it! It looks nice. At first I thought the icons at the bottom were too big, but it's a style choice.

You can optimize your site by doing a Google Chrome Audit; specifically some tips:
-Meta description, Apple favicon, viewport size; that's easy!
-Resize your images in Photoshop. If you're only showing a small version anyways you don't need a full-size image. If you want, use both and have the small-png have a link to the large-png.
-Optimize your images when exporting.
-There's no navbar, which helps for screen-readers. (Style vs accessibility.)
-A few others, you'll have to go through them.

Also there are some freaky image movements if you open the console then resize it up & down.


It does look great indeed, but there's a little glitch for me on Chrome (2560 * 1080) :


Oh boy. I remember when I have gotten the idea of my portfolio being a shell terminal where you could use cli to navigate around and access everything in a matter of seconds. This ended up not as great as I thought. I wanted it to be as light and fast as possible, so I wasted a full night making a "terminal emulator" that will fulfill my needs (everything else was very massive and bloated). Then I had an idea of of an optional "X session" you could start with a command and get an access to the "pretty" version of the site.

Then I have adopted the process of having my resume in JSON and building/publishing it in every imaginable format, instantly accessible from my "cli". Had some plans on getting my roadmap and other things there, but had work to do so it kind of hang up for a while.
Does this showcase my work? Nope. Can I show this at HR interview? Not really. Was it fun to build? Hell yes, and I still use it from time to time, just for the sake of sharing my contacts, giving my SSH keys to someone or cloning dotfiles.

And it's just as small as 11kb!


I expected ls to show me the contents but I had to use help to get that. Potential feature maybe?


Yeah, I wasn't real sure what commands to even try. It might be cool to build in some custom functionality with a list of commands at the top. For instance, if you type $ projects and hit enter it shows a list of projects.

Yeah, when a user goes to the site they either work with the terminal or not. If they don't, worst case is they'll enter a random command and be greeted with the help message. But if they use the terminal then imo, the most intuitive command would be ls.


Yeah, I actually had a lot of Unix commands baked in initially but I removed them because I didn't have the time to implement them properly. Well, it's time to commit, I guess!

Definitely, another cool instance of something similar would be the jobs page at


Such a great idea. One problem I had on mobile was that my keyboard automatically capitalizes the first letter. Happening on Android. I don't know if this is a problem other people have.


Guess everything will have to be aliased out! πŸ˜‰


Oh gosh, when I have write 'about', my name at first shows up and I thought: Wow, getting some information about me xD ahuhaua (but then I have read the rest and... well, it was interesting).

Interesting portfolio


From the description I can't say I thought it would be very good but after clicking the link I found myself poking around for while and enjoying it. For the right audience it works – nice.


Wow looks great. I had a similar idea once for my friend. His name was subash (su bash). But i couldn't persuade him to make his portfolio like a terminal.


Oh my god, please do, with a name like this he MUST have a terminal portfolio.


Funny coincidence, I just launched my website, portfolio and blog yesterday πŸ˜‰

I developed it with Gatsby and hosted it on Firebase.

I didn't used any themes, particular templates (beside the starter kit) or tools like Bootstrap. I developed everything from scratch, it's just Js and Css.

I had also a bit of more fun by including in this website two Web Components we have developed for DeckDeckGo respectively the slider and a component to lazy load external images.

Of course, I published the code as an open source project:


I get a horizontal scrollbar on Firefox 68 on Mac. Don't think it's meant to be there πŸ€·β€β™‚οΈ


Wtf really? In the main page?

Didn't faced that on my Mac with Firefox

Double checked, can't reproduce it with Firefox 67 and 68 on Mac. Are you on Windows maybe that's the difference?

Odd. Nope, I'm on Mac, like I said. Unreproducible bugs are the worst.

Changing 100vw to 100% for section.header seems to solve it for me. Something to do with the width of the vertical scroll bar not working well with 100vw maybe? Or whacking overflow-y: hidden; on the body to just nuke the problem away.

Thx for testing it again and even more for providing a possible solution, that's super cool, I mean I can't reproduce it so it helps a lot, really really cool πŸ‘

So I've modified and deployed the section width from 100vw to 100%, if I may, could you retry and tell me if the scrollbar now doesn't appear in your Firefox?

Tried again in my Chrome, Safari and Firefox, for me same same, still ok

No worries. Just looked again and success – no horizontal scrollbar. And no other noticable effects from the change. πŸ‘

Also, you may want to capitalise the languages listed on your about page.

Hooray πŸŽ‰

That was really strange, thx a lot for the support and help, really appreciated πŸ‘

Could be a good idea, in any case I planned one day to rework that "about" section a day where I'll be a bit more in a "good writing mood" πŸ˜‰


The intro section is very bold, I like it! On the other hand, on mobile it took some time to figure out to "hover" over the different projects to see their titles.


Thx for the feedback. Yep agree with you, I still need to figure out a better design for the projects ":hover" on mobile

My solution for mine is to just make it visible on mobile (mine has a semi transparent background so the image is visible but also the text). maybe a semi transparent solution could work for you on mobile.

Really nice idea.

I was also thinking on having no hover on mobile but displaying the title, which appears on hover on desktop, under the icon of the project which should for that reason become a smaller size or something like that...

Therefore your solution seems to need less css, so better ;)

That also sounds good. It would prevent the image from being obscured, which is a good thing.

Done πŸ˜‰

I went the way I explained above. On mobile no hover animation but the project's title displayed after its logo.

Thx for the brainstorming Tim πŸ‘


This is something that is also a problem on my site. I see it when I’m on mobile but forget to fix when I have the time.


I like this site a lot. Great job! I’ve been working on improving my RSS feed lately to use with dev and Mailchimp.


Thx for the feedback, I'm really happy to hear that, specially as I just launched it πŸ˜ƒ

It looks like we are really in phase, a friend of mine literally send me three days ago a msg telling me I should had a look to Publishing to from RSS πŸ˜‰

If you implement something for that purpose I would be definitely be curious about the solution

I have implemented it and it is in use with I used the gatsby-plugin-feed plugin since it’s made by the gatsby team and is relatively easy to set up. It’s worked pretty well so far although I can’t figure out how to create a media:content element into the xml to show an image for blog posts. I have it set up as an enclosure as a workaround for now.

Sounds super cool πŸ‘

Two positive feedback on the same subject in a week, that ain't something I should ignore πŸ˜‰


My portfolio site is more like a personal landing page that I can link to other stuff.

It's aimed to be mimalistic so I designed it to look like a business card as that is how I intend to use it.

(Doesn't work well on mobile sadly :( )


Hey Justin, when I visit your site in Chrome on a Chromebook, the reversed backside of the business card is visible.

The same issue occurs when viewing the backside.


When I look at the site in Chrome on mac, I'm seeing the same thing. I don't see it in Firefox though.


Thank you for the head up! Turn out the latest chrome version resulted in a bug with the jquery script I used.


Hey Justin!
I love the look and feel of your website πŸ‘πŸ½ You have a couple of typos though: "gradudate" in your cv and "I'm worked" in your About page.
I also really love the curl thing you have in your CV. Might steal the idea πŸ˜„


Hi Doaa, thank you very much! Making the curl thing is a lot of fun. Credit to where it due: I didn't come up with the idea, I learn it from this guy's blog:

Thank you for sharing the link! πŸ˜„


I can see your "About Me" text through the "Home" text (and vice-versa)... making it all quite impossible to read :( Using Chrome on Win 10.


Sweet! Can confirm it's all fixed now :D

Is this supposed to be at the bottom of your About side? curl

Yes! It's my Json resume. Meant to be an Easter egg for people who notice :)


On mobile you could just style it like a vertical business card.


Hey, Justin. I loved your landing page thingy! I think it is really cool.


Absolutely nothing wrong with that. I like the colors. I always think i should add more color to my site, but at the same time like the neutrals.


Never said there was anything wrong with doing it simple :P I didn't feel the need for anything else. I don't update it often, so why should I bloat it with a CMS.

Thank you for your compliments!

Agreed. Although I use gatsby, I had kind of the same feeling. I could use a CMS for β€œease of use” but I’m the only one using it and I’m perfectly fine with markdown so why bother?


I just built mine about a month ago. I used React and it's hosted on Heroku. I am thinking about redoing it already and trying out Jekyll for the first time.

my site


I Really liked your site! Loved your choices for the design. =)

I opened it in both my phone and an old computer that i use at work (Windows 7 x86 with Chrome 78.0.3904.108), and the waving hand emoji doesn't want to render on the PC though, but i think this have to do with the fonts i have (or don't have) installed on this PC, don't know.

Pic related:


Very nice, simple and unique...and the smile. Seriously, it can be difficult creating something unique in the world of many interesting designs.

I checked yours out because I'm a fan of React.


Your portfolio is very neat, I like it, if you accept suggestions the "Hire me" button is very hard to read (at least from mobile)...

My portfolio is based on a template I've found on GitHub, but in the time it changed radically.


Thanks! The card to fix that has been in the to-do list for a while. Maybe I’ll get that moved to the top.


I loved your Experience Section.
Would you care to share How did you do this timeline?


Mine went through a lot of versions and tech stacks.
From pure HTML and CSS -> HTML, Bootstrap and a bit of PHP
Currently it's built with MEAN stack + Bootstrap 4 + Ngrx. I know it's overkill with all the auth and everything, but it helps me manage new/old projects and adding and removing skill sets. You can have a look at it here


This is a super cool site. Great job!

As far as the overkill thing goes, I don't think that's necessarily a bad thing. The performance doesn't seem bad so I don't think it's a problem. I treat my portfolio as a space to try new things and adding features that I think would be cool (even if I don't know how to build them). If you're learning new things, challenging yourself, enjoying it, and it doesn't suck then who cares if it's overkill?


I completely agree. I'm basically using it as a playground, plus it's like a showroom of your skills.

Totally! I get that a portfolio site is a tool to help get jobs, meet people, and network in general, but is it really that useful if it's not something you enjoy working on? I don't think so.


No portfolio, hasn't been necessary for my career.

I do however have a blog, that used to be Drupal from which I migrated to Ghost. It (like all other things on my server) runs in a docker container, and sits behind another docker container running lightify, which in turn sits behind another container running traefik.

I don't post very often.. keep telling myself I should do more, but it's not a high priority really.


Interesting. I've only dabbled in docker. That sounds intense. I like the site though. It really feels like a magazine or something.


Thanks.. It's mostly the default ghost theme, just tweaked a couple small things here and there.

Traefik makes everything really pretty trivial.. it is the first point of contact for basically everything hitting the server, at least http[s] wise, though it will happily handle basically any other protocol too.

The individual docker hosts behind it use internal ports and routing, that traefik does reverse proxy for..

So you can stand up a nodejs service on port 3000, for example, and expose that as a subdomain or whatever, like: Traefik will handle grabbing an ssl cert for you, automagically from letsencrypt, and internally route traffic coming in on port 443 for that domain to that container.

It's like vhosts, turned up to 11. :)

Cool thing about traefik is you can also attach things to specific routes so if you had main site running wordpress as and wanted to setup a magento store, for example, you could just as easily expose it at as at ... pretty cool.

I'll definitely have to look into these technologies more. Thanks for all the info!

Wow. I haven't played with Docker all that much, but that sounds super interesting. If I had a dollar for every time I screwed up some virtual host config...

Definitely going to dive deeper, especially since I'm playing more with Node/JS


Just HTML, CSS and some JS. Built as it is delivered. No other tooling.

It's very minimal and updated rarely, so static code made sense. Hosted on the cheapest DigitalOcean droplet. Which also hosts some other sites and other crap that isn't public on my domain.

(Oh, I guess the blog is built on Ghost, because I wanted to try it. Using some really messy CSS there because I'm too lazy to fix it.)


Relieve my soul: .profile-image {width: 100%}; ☻


Oh, the circle image on the main page has stretched proportions. I found the class in the inspector and gave some code I think fixes it.

Ah, yes. In Chrome it seems the image has been stretched/squashed. Thanks.


Nice! The colors are there and vibrant without being overwhelming. I'm seeing a lot of developers who are also photographers. That's pretty cool.


Now that's wicked. Usually not a fan of wordiness - but I like your unique writing style. Yours is a blog I would subscribe to, but I don't see how to.



There's an RSS feed, but apart from that πŸ€·β€β™‚οΈ I didn't expect anyone to want to subscribe.


I can design and do backend but not really frontend. I wanted to see how far I could get with vanilla html/CSS/JS. You can see it in action at (clearnet) and clashkahznlvpwfg.onion (onion service)

The resume part is cool though, it's Dynamic LaTeX that autoupdates it with the latest numbers on click.


I can literally say I've never seen anyone add a scrolling marquee to the address bar. I think I like it? Hah.


I was on mobile when I looked at this before so I didn't even see that. It's pretty cool. Interesting at the very least.

Yeah haha, I knew my frontend skills weren't going to make it stand out so I had to look elsewhere. If I'm going to do it then might as well make it interesting πŸ™‚


It's true, I can't really make nice websites haha. Felt it was tongue in cheek given the situation haha.


Hey Aadi
I love your website's design, especially the part with all the links that end with your name. That's a very neat trick I may use in my website πŸ˜„


Thanks! Remember when I said I'm not good at frontend but can design? The whole thing is actually an SVG but the trick is that SVGs are nothing but XML files so I was able to individually hyperlink each link and modify it when theme is toggled via JS.

That's really cool. Thanks for the tip πŸ‘πŸ½


For my part a simple wordpress custom installation for my blog. And a second wordpress for my photography that is linked to a s3 bucket for not taking crazy space on server Hard Drive

Main Site:




When it comes to your proficiencies, what does it mean to have HTML + CSS + PHP at 80%? What is 100%?


I’ve seen this on a lot of portfolios and resumes. I always think it’s a bit odd because either it’s a percentage or grade, or it’s just hard to objectively rate ones skills against others. Just my opinion though.


I would put 100% at understanding completely the language and all of its quirks, functionalities and more. Some are easier to know than others take HTML there is a finite number of tags in HTML5 and it is easy to know them all. The rating also helps to show within all the skills and competencies which one you are more comfortable with and good with. This is however a personal take, some people might buff it up and when it comes to practical exam they will fail.


there is a state which lets you know when the website is still loading:

You can then couple that with some checks.

A good starting point would be too look at pace.js:


I like your primary site a lot. It looks like there’s some horizontal scrolling on the homepage on mobile. I suspect the culprit is the carousel.


Yes I saw it and been meaning to fix it but didn't have much time and kept procrastinating haha. Glad you like the site.


I created my portfolio with just HTML and CSS. There is a little JS for smooth scrolling and a themed console message.

I really love musicals so I went with that for the theme of my portfolio site.



This is definitely a unique portfolio. I've never seen one like this. Good job! What are the lyrics at the top from?


Nice looking site!

I use Jekyll for mine. It went through a few iterations of different front end frameworks before I decided on Bulma. I ended up building a Jekyll theme in the end so others could use it too.

Here’s the link to the theme:


Thanks! I ❀️ Bulma. I use it all the time! I like your site, it’s minimalistic and easy to navigate.


Thanks. After looking at others sites I’m thinking about experimenting with some css animations to make it a bit more interesting.

I know what you mean. I do little transitions and things, but nothing crazy. The things some people can do with javascript and css to make a website come to live is just amazing to me. I don't get it.


Noob Here.
Any reason for not using bootstrap
Or, is it just merely interesting

It really depends on your project. The biggest turnoffs for me are the popularity (easy to spot without a lot of modifications) and the fact that it needs jquery. Burma is css only which means that it doesn’t have all of the interactivity, but it also means I’m not importing a bunch of stuff if I’m not going to use it.

Thanks for the reply, man.
Understood the interconnectivity and unnecessary stuff. That sometimes also bugs me.
But Popularity? I thought more popular means more stable. And there is a lot more Bootstraps theme than Bulma.

Perhaps popularity isn’t the right word. Popularity generally does mean more stable. I was simply referring to being easily recognizable.

I quite like using Buefy for interactive pages. It’s a library that combines vue.js and Bulma so no need for jQuery.


Waoh! Pretty smooth, nice work here.

I was wondering if programmers get to build a portfolio site ? Or do they just "throw" their projects and stuff on github...

Sorry if it sounds dumb, am new to this (programming/development) world.


Unfortunately, you can't expect your work to speak for itself entirely. Having a portfolio or personal site allows potentials employers know who you are and that naturally sets you apart from everyone else. You can always link your GitHub from there.


So even though am not really experienced I should consider building one in the near future, right?

I'd say it's wise to do so. There's not really a downside. People are going to ask for it (or your work) eventually, so you might as well go with your strongest foot forward.


Hey! Not a dumb question at all. There are developers who go both routes. It's really up to you. I like having a portfolio site because A) I've been told that it has made the difference when getting a job and B) it's helped me land some freelance jobs. In addition, it also acts as a sort of playground for me to try new things out.


I see. It can be really helpful, if you wish to extend your visibility.
Thanks for the explaination!


Hi, so like many other people in the comments, I built by portfolio using Gastby because it's super fast and gives all the speed benefits of optimising a static site. I've hosted it on Netlify. I've built it a couple of months ago and have been making tweaks here and there. It's still sort of a work in progress as I plan to keep building more projects.

Would love to get some feedback from you guys on how I could improve anything.

My Portfolio:


Hey Nikhil! It looks great overall, my one comments would be to create some lower resolution versions of your images. They take a long time to load, and they display on screen much smaller than the actual image is, so you don't need all that resolution.

For example, on your About Me page, your selfie took a full 2 seconds to load for me (and that's on desktop with a physical connection; I assume it would be longer on mobile). When I inspect the image itself, it's 1200x1200 pixels, but on the page it's sized to 150x150 pixels. If you created a scaled down version of the image that was only 150x150, or even a bit bigger so you can use it in more places, it would load a ton faster.

Additionally, you could decrease load time by using an app like to compress it. When I toss your 1200x1200 pixel selfie picture in there, I see I can use MozJPEG to compress it from 704KB to only 86KB, which would definitely load a ton faster and save some people a bunch of mobile data. And that's without first scaling down your image.

Otherwise, I think you've got a solid personal site!


Hey Ken, thank you so much for not only taking the time out to check out my portfolio but also for giving me such useful, actionable advice! I've reduced the sizes of my assets using the compression app you mentioned and I can see a very noticeable difference in image performance and load times. I'm just starting out and haven't really given much thought about optimising image load times but I can see how it makes the experience better and also consume lesser mobile data on slower networks. This is something that I will now keep in mind.


I've never heard of squoosh. I usually use for this. Are you using gatsby image to display images Nikhil? That should take care of a lot of the heavy lifting for you too.


The portfolio site looks nice, but you lose a lot of the "above the fold" space with your angled image background. I think if you brought the text up with a white or semi-transparent background, it might alleviate that issue.


Hey Tim, thank for this discussion thread! I opened your website and saw immediately, that your 'hire me' button is black on a very dark background on mobile ( Huawei P20), because it is placed on the waves of the background pickture by page scaling.

Maybe you want to fix this :)