Showcase

Portfolio Site

Built to showcase my web development projects professionally

Throughout my time as a student, I built a few different portfolio sites but mostly for school assignments and with technologies that I didn't like or that were outdated. After graduating from UVU I knew it was time to build a proper, professional site that I could use to show off my work and help me land jobs.

  • Modern, responsive UI. I built this site from the ground up with a mobile-first approach to ensure it looks great on any device.
  • Fast load times. This site utilizes features from NextJS to make load times exceptionally short.
  • Email messaging I've implemented an solution to provide an easy way for visitors to send me a message.

Overview

This portfolio site is the culmination of all my web development skills. I decided to go with NextJS because that's what I used for my senior project, and I have come to love the features and developer experience that NextJS offers. I also enjoyed using TailwindCSS on my senior project; it sped up the development process by a large margin, so it was a must-have.

Because I chose to use Tailwind, I chose to use the TailWindUI library which was developed by the same people behind Tailwind. It wasn't free, but a one-time payment for lifetime access to a huge library of professional UI components is hard to beat and a must-have tool for any web app. Besides the UI for the site, I implemented a simple email solution using Resend for React that enables visitors to the site to quickly and seamlessly send me a message.

Modern UI

I chose to go with TailwindCSS on this project for the same reason many other developers do: it speeds up the development process. When you first look at Tailwind, it can be very confusing because most of the CSS rules have been shortened to abbreviations directly in the class name of the element. But after working with it for a little while and learning the common class names, it becomes so much better than plain CSS. First, I don't have to switch between a separate CSS file and the component to add styling. I can stay within the same file as all my other code and quickly see the results during the development process.

Another great thing about Tailwind is how easy it is to locate a specific style rule that I need to change. I can just look right at the JSX and see exactly what is being applied, which makes it so much easier to understand the big picture when I am not switching between files for every rule.

TailwindCSS is a little hard to read, but it's worth it.

Because I am using TailwindCSS, I chose to go with TailwindUI, which is a UI library by the same people. It is an extensive resource for web developers that contains components for pretty much anything you need. It has common things shared between all UI libraries, like navbars and buttons, but it also has page sections for sites like e-commerce shops or blogs. The best thing about a Tailwind component library, however, is the customization. There are a couple things on this site that don't differ from the library, but I have customized almost every component to align with my vision for the site.

TailwindUI offers a large selection of components

Lightning fast loading

I opted to utilize NextJS as the foundation for my portfolio website due to its unparalleled capability to optimize performance and streamline development. NextJS's features, such as server-side rendering (SSR) and static site generation (SSG), were instrumental in ensuring lightning-fast load times and an enhanced user experience. By rendering pages on the server side, NextJS minimizes initial load times, providing visitors with swift access to content. Additionally, its ability to generate static HTML files for each page ensures efficient delivery of content, resulting in seamless navigation and reduced server load.

Overall, NextJS not only accelerates development by providing a comprehensive toolkit but also ensures an optimized browsing experience, making it the ideal choice for powering my portfolio site. Because of my positive experiences with NextJS and its wide use in the industry, I can see myself using NextJS for the foreseeable future.

Email solution

Choosing Resend for email on this site was a great choice that saved a lot of time. Resend's straightforward API and customizable components made it possible to tailor the email functionality to align seamlessly with my goals for communication. I was able to use a single function call to send an email to my address using the Resend API. The free tier was more than enough for my needs, but they have a few paid tiers depending on how many emails you need to send.

Resend is something that I will definitely be using in the future. It's easy to use, has great documentation, and the free plan does everything I need it to.

I made an API endpoint using NextJS to send myself an email with Resend when someone submits a message on the site.

What I learned

Before starting this project, I had a general idea of the technologies I wanted to use and the goal of promoting myself, but I really didn't know the specifics or how long it would take. When I started, I first estimated a couple weeks, but that turned into about a month because of how much time I was spending making everything look great. I learned some new things about Tailwind and gained some more experience building polished UI, but my biggest takeaway from this project is learning how to promote yourself and build a brand. I learned about how to present myself in a professional manner and showcase my work for all the world to see. Though I will always be updating this site to make it even better, I feel like I did a great job with attention to detail.