Skip to content

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🚀 Professional Full-Stack Developer Portfolio & CMS

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.


🌟 Key Features

🌐 Public Portfolio Website (/)

  • 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.

🛡️ Admin Content Management System (CMS) (/admin/**)

  • 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.

🛠️ Technology Stack

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

📁 Package Architecture

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

⚙️ Configuration & Environment Variables

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

🚀 How to Run the Application

1. Prerequisites

  • 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).

2. Database Setup

Create the MySQL database if it does not already exist:

CREATE DATABASE IF NOT EXISTS portfolio_db;

3. Build & Run via Command Line / Maven

# Navigate to project directory
cd D:\SPportfolio

# Run tests and compile
mvn clean test

# Start the Spring Boot application
mvn spring-boot:run

4. Running in IntelliJ IDEA / Spring Tool Suite (STS)

  1. Open IntelliJ IDEA or Spring Tool Suite.
  2. Select File → Open... and choose the D:\SPportfolio folder.
  3. Allow Maven to import dependencies automatically.
  4. Locate com.portfolio.PortfolioApplication.java and click Run.
  5. Open your browser and navigate to: http://localhost:8080

🔑 Default Admin Credentials

  • 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.)


📧 Configuring Real Email (Gmail SMTP)

To enable live email forwarding for contact inquiries:

  1. In your Google Account, enable 2-Step Verification and generate an App Password.
  2. 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
  3. Restart the application. Inquiries submitted via the public contact form will now automatically send real-time email alerts to your inbox!

🧪 Running Automated Tests

mvn test

The 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

About

A full-stack personal portfolio built with Spring Boot, Thymeleaf, MySQL, and Spring Security. Features dynamic projects, certificates, skills, education, achievements, resume, contact via email, GitHub links, and a secure Admin CMS to manage portfolio content without changing source code.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages