← All systems
P–04 / 07

Case study / Full-stack system

Personal Full-Stack Portfolio

A database-backed portfolio carried from backend services to a modern interface.

CategoryFull-stack systemStackReact · Spring Boot · PostgreSQLLicenseMITLiveOpen build ↗SourceGitHub ↗

Overview

What the system is

A personal portfolio engineered with a Spring Boot REST API, a React interface, and a serverless PostgreSQL layer — featuring a dark-mode glassmorphism UI and interactive OpenAPI documentation.

Capabilities

What it does

  • 01Production REST APISpring Boot 3.2.4 service with a service layer, JPA repositories, and a global exception handler.
  • 02Serverless databasePostgreSQL 16 on Neon (or local Docker) with profiles, projects, skills, and contact_messages tables.
  • 03Contact submissionsPOST /api/contact_messages validates and persists visitor messages.
  • 04Interactive API docsSpringDoc OpenAPI exposes Swagger UI at /swagger-ui.html.
  • 05Animated interfaceReact 19 + Vite 7 + Tailwind v4 client with Framer Motion and React Router v7.
  • 06CI/CD pipelineGitHub Actions with Vercel (frontend) and Render (backend) deployment.

Engineering

Decisions on record

Client
React 19 · TypeScript · Vite 7 · Tailwind CSS v4 · Framer Motion · React Router v7.
Server
Spring Boot 3.2.4 · Java 21 · Spring MVC · Spring Data JPA · Jakarta Validation.
Data
PostgreSQL 16 via HikariCP — Neon serverless in production, Docker Compose locally.
API
GET /api/profile · /api/projects · /api/skills · POST /api/contact_messages.