A modern, interactive portfolio website built with React and Spring Boot, featuring Netflix-style intro animations, dynamic project display, and a contact form with backend data handling.
- Netflix-style Intro Animation: Engaging intro sequence with custom animations
- Interactive UI: Custom cursor, smooth transitions, and responsive design
- Dynamic Projects: Projects fetched from backend database with search functionality
- Contact Form: Functional contact form with backend integration and validation
- Background Music: Ambient audio experience (user-controlled)
- Responsive Design: Optimized for all device sizes
- Modern Tech Stack: React + Spring Boot with production-ready architecture
- React 18 with Vite
- Framer Motion for animations
- CSS3 with custom properties and gradients
- Bun package manager
- Spring Boot 3.2.0 with Java 17
- Spring Data MongoDB for database operations
- MongoDB Atlas (production) / Local MongoDB (development)
- Maven build system
- Jakarta Validation for data validation
- Node.js 18+ or Bun
- Java 17+
- Maven 3.6+ (or use included wrapper)
- MongoDB Atlas account (for production) or Docker (for local MongoDB)
-
Clone the repository
git clone <repository-url> cd Portfolio
-
Install dependencies
bun install # or npm install -
Configure environment
cp .env .env.local # Edit .env.local with your backend URL if different -
Start development server
bun dev # or npm run devFrontend will be available at
http://localhost:5173
-
Setup MongoDB (choose one option):
- Option A: MongoDB Atlas (recommended for production)
- Follow MongoDB Atlas Setup Guide
- Get your connection string
- Option B: Local MongoDB with Docker
npm run docker:dev # Starts MongoDB + Mongo Express
- Option A: MongoDB Atlas (recommended for production)
-
Navigate to backend directory
cd backend -
Configure MongoDB connection
- Create
.envfile in backend directory:MONGODB_URI=mongodb+srv://your-connection-string MONGODB_DATABASE=portfolio
- Or for local MongoDB:
MONGODB_URI=mongodb://localhost:27017/portfolio MONGODB_DATABASE=portfolio
- Create
-
Run the application (using Maven wrapper)
./mvnw spring-boot:run # or if you have Maven installed mvn spring-boot:runBackend will be available at
http://localhost:8080 -
Alternative: Using IDE
- Import as Maven project in IntelliJ IDEA or Eclipse
- Run
PortfolioApplication.java
Portfolio/
βββ public/ # Static assets
β βββ bgmusic.mp3 # Background music
β βββ intro.mp3 # Intro sound
β βββ kishan.jpeg # Profile image
βββ src/
β βββ components/ # React components
β β βββ NetflixIntro.jsx
β β βββ MainContent.jsx
β β βββ Projects.jsx
β β βββ ContactForm.jsx
β β βββ ...
β βββ services/ # API services
β β βββ ApiService.js
β βββ ...
βββ backend/
β βββ src/main/java/com/kishan/portfolio/
β βββ entity/ # JPA entities
β βββ repository/ # Data repositories
β βββ service/ # Business logic
β βββ controller/ # REST controllers
β βββ config/ # Configuration
βββ ...
GET /api/projects- Get all projectsGET /api/projects/{id}- Get project by IDGET /api/projects/search?q={query}- Search projectsPOST /api/projects- Create project (admin)PUT /api/projects/{id}- Update project (admin)DELETE /api/projects/{id}- Delete project (admin)
POST /api/contact- Submit contact form
id(String, MongoDB ObjectId)title(String, Not Null)description(String)technologies(Array of Strings)github_url(String)live_url(String)image_url(String)featured(Boolean)created_at(DateTime)updated_at(DateTime)
id(String, MongoDB ObjectId)name(String, Not Null)email(String, Not Null)message(String, Not Null)created_at(DateTime)
VITE_API_URL=http://localhost:8080/apiMONGODB_URI=mongodb+srv://username:password@cluster.mongodb.net/portfolio?retryWrites=true&w=majority
MONGODB_DATABASE=portfolio# Frontend
VITE_API_URL=https://your-backend-url.com/api
# Backend
MONGODB_URI=mongodb+srv://username:password@cluster.mongodb.net/portfolio?retryWrites=true&w=majority
MONGODB_DATABASE=portfolio
FRONTEND_URL=https://your-frontend-domain.com- Build the project:
bun run build - Deploy
distfolder - Set environment variable:
VITE_API_URL=https://your-backend-url.com/api
- Create MongoDB Atlas cluster (see MongoDB Setup Guide)
- Set environment variables:
MONGODB_URIMONGODB_DATABASEFRONTEND_URL
- Deploy using Git or Docker
bun run test
# or
npm run testcd backend
./mvnw test- Use the admin API endpoints or
- Add to
DataInitializer.javafor default projects
- Modify CSS custom properties in component files
- Update color schemes in
MainContent.css - Customize animations in Framer Motion components
- Add additional fields in
Contact.javaentity - Update
ContactForm.jsxcomponent - Modify validation rules in backend
Please read CONTRIBUTING.md for details on our code of conduct and the process for submitting pull requests.
This project is licensed under the MIT License - see the LICENSE file for details.
- Netflix for inspiration on the intro animation
- Framer Motion for smooth animations
- Spring Boot community for excellent documentation
- React community for best practices
"A long descriptive name is better than a short enigmatic name. A long descriptive name is better than a long descriptiveΒ comment.β
- Email: kishan@example.com
- LinkedIn: linkedin.com/in/kishan
- GitHub: github.com/kishan
Built with β€οΈ by Kishan