Portfolio Website – Project Details

A breakdown of how this site was built and how it works

Overview

This portfolio site was created using Spring Boot with the JTE templating engine. It allows full CRUD operations for Projects and Experience, stored in a MySQL database. The admin dashboard supports editing project metadata, highlighting featured projects, and uploading static HTML demos.

Key Features

Architecture

The backend is written in Java using Spring Boot. JTE templates handle server-side rendering. Data persistence is handled by Spring Data JPA with MySQL. Uploaded files are served via Spring’s WebMvcConfigurer, mapping /static-uploads/** to the server file system.

Architecture Diagram

Code Highlights

Static HTML Uploads

Each project can host its own static HTML demo page. Files are stored in dedicated folders and accessible via unique links. This enables live previews of mini-projects or interactive showcases without extra servers.

Fully Dynamic

Aside from the project description pages (like this one), the entire portfolio website is fully dynamic. All data — including projects, experience, and media — is pulled directly from the MySQL database. This ensures that any changes made through the admin panel (adding, editing, or removing projects) instantly reflect across the live site without requiring static HTML updates.

Upload Example

Deployment

The site is deployed on an AWS EC2 instance with MySQL for persistence. Uploaded HTML and media live under /opt/portfolio/uploads, ensuring survival across application restarts.