Portfolio – James Giannini

Feb 18 - May 18
  • Creating a high-performing, responsive website from designed mockups
  • Compressing large(30MB+) images down for fast load times
  • Creating a custom JavaScript scrolling indicator for navigation

Project Overview

James had a design/vision for his portfolio, but needed the expertise to put the front end together. My job was to turn the sketch designs into a functioning static website. The designs were heavily image based, so there is a strong emphasis on image performance and lazy-loading.


For any static site, the process is generally straightforward. For this one, I went with my SCSS framework and used a basic gulp file for compilation. There were 4 unique pages total, so I simply created it page by page, starting with the home page.

The designs were made to easily scale down to mobile, so it made sense to build out the desktop version first. After a single page was done, I used a similar process for the remaining pages. After the pages were built out, it was time to implement the JavaScript navigation and image lazy loading. I used an existing library to handle the image galleries and lazy loading. After a few hours of hacking, it was all good to go!

After that, there were only some minor tweaks and changes, including the image galleries and optimizing the large images on the site.

James Giannini

Brandon is a true pro. He helped me bring my designs to life, which helped me get the job I wanted. He's organized, friendly, and always brings good ideas to the table. I would absolutely recommend him to any future clients.

Technologies Used


Since it was a static site, it made sense to keep the technologies simple. After all, the goal was for the final build to be as light as possible. As for the JavaScript, I just used JQuery and some of its libraries, such as lightbox and lazy loading. It also sped up the custom navigation part of the website in terms of development time.


I used SASS/SCSS, so I used a pre-existing gulp file I used previously for SCSS compilation and auto-prefixing. That’s all that was needed for this site.


When I do a custom design, I don’t usually like to use something like Bootstrap or Foundation. I instead went with vanilla CSS using flexbox layouts and some basic global classes/mixins.

Want to check out some code demos?

Check out code samples written in JavaScript, React, Node, and more

Demo 1
Defining Reusable Column Extends with SCSS

Quick Note: The atSmall type mixins are just basic media queries. Since these kinds of layouts are common, they also need to be overwritable if I want to change the spacing. Generally, the ‘default’ spacing is defined in the extend/mixins. Example Use Cases To get the layout working, you only need a container class and […]

Demo 2
Discord Bot: Reddit API Ask Feature

The Purpose Some Discord bots have a feature where you can “chat” with the bot(i.e: Cleverbot integrations). I decided to take a spin on this concept and utilize the Reddit API to answer common questions. A user from the server asks a question using the b!ask command, then the bot gives a random answer from […]

Demo 3
React.js Modal Using The Hooks API

Modals are a classic piece of application functionality, made even easier with libraries like React. You could go with a library, but you can often make your own with less than 100 lines of code. Using the hooks API, you don’t even need a class based approach. This example is going full functional! Defining The […]

Need something? Let's get in touch