A complete, production-ready personal developer portfolio web application with an integrated Admin Content Management System (CMS) engineered with Java 17, Spring Boot 3, Spring Security, Spring Data JPA, Hibernate, MySQL 8, Thymeleaf, and Bootstrap 5.
- Modern Responsive Design: Optimized across Desktop (1920x1080, 1366x768), Laptop, Tablet, and Mobile devices (375px, 390px, 430px) with smooth scrolling and glassmorphism.
- Dynamic Hero Section: Interactive typewriter title effect, dynamic greeting, introduction bio, social profile links, and direct Call-to-Action (CTA) buttons.
- About & Highlights: Detailed professional bio, career objectives, years of experience, and metric badges.
- Categorized Technical Skills: Filterable skills (Languages, Backend, Frontend, Database, DevOps & Tools) with animated proficiency progress bars and level indicators.
- Experience & Education Timelines: Vertical interactive career and academic milestones with technology tags.
- Projects Showcase & Case Studies:
- Filterable category pills (All, Full Stack, Backend, Cloud, Frontend).
- Featured projects highlights.
- Dedicated Project Details page (
/projects/{slug}) featuring problem statements, architecture blueprints, feature breakdowns, contribution details, GitHub/Demo links, and full Screenshot Lightbox Galleries.
- Certificates Showcase (
/certificates): Verified credentials with issuing organization badges, credential IDs, verification links, and thumbnail modal previews. - Achievements & Recognitions: Hackathon awards, competitive programming milestones, and proof links.
- Resume Portal (
/resume/download&/resume/preview): Dynamic PDF resume download with real-time download tracking. - Inbound Contact System: Responsive contact form with server-side validation, database lead storage, and asynchronous email notifications via Spring Mail.
- Theme Switcher: Seamless Dark and Light theme toggle with client-side state persistence.
- Subtle Admin Entry: Discrete link in the footer leading to the secure admin login portal.
- Secure Authentication: Spring Security session-based login (
/admin/login) with BCrypt password hashing and CSRF token protection on all forms. - Live Dashboard (
/admin/dashboard):- Dynamic statistical metrics (Total Projects, Featured Projects, Total Certificates, Total Skills, Education, Experience, Achievements, Unread Messages, Resume Downloads).
- Quick action shortcuts.
- Recent inquiries and recent projects preview tables.
- Full CMS CRUD Modules:
- Profile Management (
/admin/profile): Update personal information, designation, bio, career objective, contact info, social links, and upload profile avatar. - Project Management (
/admin/projects): Create, edit, reorder, and delete projects with custom slug generation, main cover image upload, and multi-screenshot gallery uploads. - Certificate Management (
/admin/certificates): Add, edit, preview, and delete certifications with certificate scan/photo uploads and credential links. - Skill Management (
/admin/skills): Manage technical skills, category classification, proficiency percentage, and display orders. - Experience & Education Management (
/admin/experience&/admin/education): Full timeline lifecycle management. - Achievement Management (
/admin/achievements): Manage awards and honors. - Resume Management (
/admin/resume): Upload new PDF resumes, replace active versions, view download analytics, and manage previous resume archives. - Contact Messages Inbox (
/admin/messages): View inquiries, unread counter badges, mark read/unread, and delete with confirmation. - Site & SEO Settings (
/admin/settings): Configure site title, meta descriptions, search keywords, and forwarding email settings.
- Profile Management (
| Layer | Technologies |
|---|---|
| Language & Platform | Java 17 LTS |
| Backend Framework | Spring Boot 3.2.5 (Spring MVC, Spring Security, Spring Data JPA, Spring Validation, Spring Mail) |
| Database & ORM | MySQL 8 RDBMS, Hibernate 6, HikariCP |
| Template Engine | Thymeleaf 3 with Spring Security 6 integration |
| Frontend UI | HTML5, CSS3, Bootstrap 5.3, Bootstrap Icons, Font Awesome 6, JavaScript ES6+ |
| Build & Tooling | Apache Maven 3.9, Lombok |
| Testing | JUnit 5, Mockito, Spring Boot Test, Spring Security Test, MockMvc |
D:\SPportfolio\
├── pom.xml
├── README.md
├── .env.example
├── .gitignore
├── uploads\ # Local file storage for images and resumes
│ ├── profile\
│ ├── projects\
│ ├── certificates\
│ ├── achievements\
│ └── resume\
└── src\
├── main\
│ ├── java\com\portfolio\
│ │ ├── PortfolioApplication.java
│ │ ├── admin\ # Dashboard controller, service, stats DTO
│ │ ├── config\ # Security, WebMvc, Mail, Properties config
│ │ ├── common\ # BaseEntity audit fields, SlugUtils
│ │ ├── exception\ # GlobalExceptionHandler, ResourceNotFoundException
│ │ ├── file\ # FileStorageService (Safe UUID uploads & validation)
│ │ ├── data\ # DataSeeder (Initial Admin & Sample Portfolio data)
│ │ ├── user\ # User entity, UserRepository, CustomUserDetailsService
│ │ ├── profile\ # Profile & SocialLink entities, services, controllers
│ │ ├── skill\ # Skill entity, SkillCategory enum, services, controllers
│ │ ├── education\ # Education entity, repository, services, controllers
│ │ ├── experience\ # Experience entity, repository, services, controllers
│ │ ├── project\ # Project, ProjectScreenshot, ProjectTechnology entities & controllers
│ │ ├── certificate\ # Certificate entity, repository, services, controllers
│ │ ├── achievement\ # Achievement entity, repository, services, controllers
│ │ ├── resume\ # Resume entity, repository, services, controllers
│ │ ├── contact\ # ContactMessage entity, EmailService, Contact controllers
│ │ ├── setting\ # SiteSetting entity, repository, services, controllers
│ │ └── home\ # Public HomeController
│ └── resources\
│ ├── application.properties
│ ├── static\ # CSS, JS, Images, Fonts
│ └── templates\ # Thymeleaf templates (public, admin, fragments, error)
└── test\ # Comprehensive automated test suite
The application can be run directly using the default MySQL configurations or customized using standard environment variables:
| Variable | Default Value | Description |
|---|---|---|
DB_URL |
jdbc:mysql://localhost:3306/portfolio_db?... |
JDBC database connection URL |
DB_USERNAME |
your username |
MySQL database username |
DB_PASSWORD |
your password |
MySQL database password |
ADMIN_EMAIL |
admin@portfolio.com |
Default seeded admin email |
ADMIN_PASSWORD |
admin123 |
Default seeded admin password |
ADMIN_NAME |
Portfolio Admin |
Default admin display name |
SERVER_PORT |
8080 |
Web server port |
UPLOAD_DIR |
uploads |
Uploaded media directory |
MAIL_HOST |
smtp.gmail.com |
SMTP Mail Server Host |
MAIL_PORT |
587 |
SMTP Mail Server Port |
MAIL_USERNAME |
(blank) |
SMTP Email Address |
MAIL_PASSWORD |
(blank) |
SMTP App Password |
MAIL_ENABLED |
false |
Enable live SMTP email dispatch |
- Java 17 JDK installed and available on
PATH. - MySQL 8 server running on port
3306. - Maven 3.8+ (or bundled with IntelliJ IDEA / Spring Tool Suite).
Create the MySQL database if it does not already exist:
CREATE DATABASE IF NOT EXISTS portfolio_db;# Navigate to project directory
cd D:\SPportfolio
# Run tests and compile
mvn clean test
# Start the Spring Boot application
mvn spring-boot:run- Open IntelliJ IDEA or Spring Tool Suite.
- Select File → Open... and choose the
D:\SPportfoliofolder. - Allow Maven to import dependencies automatically.
- Locate
com.portfolio.PortfolioApplication.javaand click Run. - Open your browser and navigate to:
http://localhost:8080
- Login URL:
http://localhost:8080/admin/login - Email:
admin@portfolio.com - Password:
admin123
(You can update your personal information, email, bio, and password directly through the Admin Dashboard.)
To enable live email forwarding for contact inquiries:
- In your Google Account, enable 2-Step Verification and generate an App Password.
- Set the environment variables:
set MAIL_USERNAME=your-email@gmail.com set MAIL_PASSWORD=your-16-char-app-password set MAIL_ENABLED=true set MAIL_TO=your-inbox@gmail.com
- Restart the application. Inquiries submitted via the public contact form will now automatically send real-time email alerts to your inbox!
mvn testThe test suite validates:
- Spring Boot Application Context initialization
- Public & Admin route controller mapping (
MockMvc) - Spring Security unauthorized redirection & role enforcement
- Project slug generation and CRUD services
- Contact form processing and async notification triggers