Personal site for backend-engineering work: case studies, projects, skills. The site itself is a portfolio piece — a Spring Boot API with a static frontend, built the way production services are built.
frontend/ → GitHub Pages (static, works standalone)
backend/ → Spring Boot 3 API on Render free tier (Docker)
/api/profile profile + case-study JSON
/api/contact rate-limited contact form
/api/visitors visit counter
/swagger-ui live OpenAPI docs
/actuator/health
The frontend bakes all content in and treats the API as progressive enhancement — Render's free tier cold-starts (~1 min), and the site must never look broken while that happens.
# backend
cd backend && mvn spring-boot:run # → localhost:8080/swagger-ui
# frontend — any static server
cd frontend && python -m http.server 5500- Push to GitHub →
deploy-pages.ymlpublishesfrontend/to GitHub Pages. - Connect the repo on render.com →
render.yamlbuildsbackend/Dockerfile. - Update
APIconstant infrontend/index.htmlwith the Render URL. - Set
ALLOWED_ORIGINSenv var on Render to the GitHub Pages origin.