Behind the Build: How This Site Was Made
Jeremy Barber
·6/8/2025
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).