Designing my portfolio

Designing my portfolio

Over the past weeks, I wrapped my head around the idea of taking my portfolio out of Sketch so I could finally have my own page to showcase my projects. Instead of relying on website builders to speed up the process, I decided to build the entire site using my AWS cloud and web development skills so I could challenge myself and make it a milestone.

The very first thing I focused on was theming. Being a fan of dark mode, I knew I had to ensure the site detected whether the user prefers light or dark mode at the OS level and adapted to that preference. For design consistency, all colors, shadows, and gradients are centralized in a theme stylesheet, which makes it easy to adjust the visual style across the entire project. I also adapted the page to have a mobile-friendly flow and a menu that locks the page scroll when opened, solving the common “jumping background” issue on small screens.

I built the contact form using a lightweight backend workflow with AWS Lambda. When a visitor submits the form, the data is sent to an API Gateway endpoint that triggers a Lambda function. The function formats the message and sends it directly to my inbox using Amazon SES. It’s a fully serverless solution that integrates cleanly with the rest of the AWS architecture.

All the hosting is done through AWS. The static portfolio files live in an Amazon S3 bucket configured for static website hosting. I placed a CloudFront distribution in front of the bucket to handle caching, SSL, and global distribution so the site loads quickly regardless of where it is accessed from. Route 53 manages my domain, and everything integrates with AWS Certificate Manager for HTTPS.

For this blog, I decided to use Ghost CMS and hosted it separately on an EC2 instance. The setup involved installing Node.js and the Ghost CLI on an Ubuntu instance, configuring NGINX as a reverse proxy, and letting Ghost handle the application itself. I mapped a subdomain through Route 53 to the EC2 instance so the blog runs independently from the main portfolio.

Bringing everything together required frontend engineering, UI design, system configuration, and AWS infrastructure work. In the end, I managed to get my portfolio performing the way I wanted, looking consistent across devices, and hosting my own blog to share my journey.