Behind the Build: How This Site Was Made

Jeremy Barber

·

6/8/2025

Behind the Build: How This Site Was Made

What You’re Looking At

This site is more than a portfolio. I built it to manage my content, highlight projects, and demonstrate the kind of applications I can build. It includes full user authentication, a private dashboard, and a live blog system. Everything is self-hosted and deployed in production.

Tech Stack

  • Frontend: Next.js with the App Router, React, TypeScript, TailwindCSS, React Query, and shadcn/ui for components and styling

  • Backend: Node.js with Express and TypeScript. The API handles authentication, CRUD operations, and role-based access.

  • Database: MySQL using Prisma ORM

  • Authentication: JWT-based, using access and refresh tokens

  • Storage: Linode Object Storage (S3-compatible) for image uploads

  • Deployment: Docker Compose on a VPS with NGINX as a reverse proxy, SSL via Certbot, and Fail2ban for security

Features

  • Secure login and registration system

  • Admin dashboard for managing posts, projects, and tags

  • Upload support for avatars and cover images

  • Paginated and searchable lists

  • REST API backend separate from the frontend

  • Mobile-friendly and responsive design

Why I Built It

I wanted a real, working app that could represent my skills across the full stack. This project gave me the space to build an actual system with authentication, backend logic, deployment pipelines, and content management on my own infrastructure.

Source Code

The full codebase is available in the code link. Feel free to browse the repo if you want to see how things are structured or how I handle specific functionality.

Next Steps

This is an ongoing project. I’ll continue improving the dashboard, writing new blog posts, and possibly adding more features.

Thanks for checking it out. If you’re hiring or looking to collaborate, send me a message through the contact page (link in nav or footer).

TypeScriptNodeJSLinuxReactJSFirewallVirtual MachinesNetworkingS3