Project · Web · Portfolio

Personal Resume Website

HTML / CSS / JS Node.js Docker Nginx Cloudflare Tunnel Self-hosted

Project Overview

Who

Built for a systems analyst and project lead with a background spanning manufacturing, healthcare, and enterprise IT — someone whose work lives in systems and process rather than code, but who wanted a modern digital presence that reflects both technical capability and professional depth.

What

A single-page personal portfolio and resume website with a cosmic visual theme, smooth animations, and a hidden easter egg mini-game. It includes a working contact form backed by a self-hosted Node.js email handler, and is fully containerized and served from a home lab server.

The site covers professional experience, core skills, education, certifications, and a growing section for independent side projects.

When

Designed and built in early 2026. The initial version launched on Netlify with a managed form backend, then migrated to a self-hosted infrastructure stack shortly after — using it as an opportunity to apply homelab skills in a real, public-facing deployment.

Where

Hosted on a personal Ubuntu home lab server, served via an Nginx Docker container, and made publicly accessible through a Cloudflare Tunnel — no open ports required on the home network. Live at alexgreimann.com.

Why

A traditional resume is a static document. This project was built to create something more memorable — a space that shows range, reflects personality, and demonstrates that systems thinking extends beyond the day job.

It also served as a practical exercise in end-to-end deployment: from writing HTML and JavaScript to containerizing services, configuring reverse proxies, managing DNS, and setting up secure remote access without exposing the home network.

Stack & Tools

Frontend
HTML · CSS · Vanilla JS
Server
Nginx (Alpine)
Form Backend
Node.js · Express · Nodemailer
Containers
Docker · Docker Compose
Tunnel
Cloudflare Tunnel (cloudflared)
Host OS
Ubuntu Server
DNS & CDN
Cloudflare
Email
Gmail SMTP (App Password)