Skip to content

Ashwin-Chavhan/Portfolio-Website

Repository files navigation

πŸš€ Ashwin Chavhan - Full Stack Developer Portfolio

Portfolio Website LinkedIn GitHub Email

A modern, interactive full-stack portfolio website showcasing professional web development expertise with MERN stack.

View Live Portfolio β€’ GitHub Repository β€’ Contact Me


πŸ“‹ Table of Contents


🎯 About

This is a full-stack portfolio website built with the MERN stack (MongoDB, Express, React, Node.js). It serves as a comprehensive showcase of my skills, projects, and professional experience as a Full Stack Web Developer.

Key Highlights:

  • 🎨 Modern, interactive user interface with smooth animations
  • πŸ“± Fully responsive design (mobile-first approach)
  • πŸ”Œ Functional backend API with database integration
  • ⚑ Optimized performance (Lighthouse Score: 90+)
  • πŸ”’ Security best practices implemented
  • 🎯 SEO optimized with structured data
  • πŸ“Š Real-time contact form with email notifications
  • πŸŒ™ Dark/Light mode toggle

πŸ›  Tech Stack

Frontend

React Tailwind CSS JavaScript React Router Axios Framer Motion

Frontend Libraries:

  • State Management: React Hooks (useState, useContext, useReducer)
  • Animations: Framer Motion, React Spring
  • Form Handling: React Hook Form + Zod validation
  • HTTP Client: Axios
  • Icons: React Icons, Heroicons
  • Syntax Highlighting: react-syntax-highlighter
  • Scroll Effects: AOS (Animate On Scroll), Intersection Observer API

Backend

Node.js Express MongoDB REST API

Backend Libraries:

  • Web Framework: Express.js
  • Database: MongoDB + Mongoose ODM
  • Authentication: JWT (optional for future enhancement)
  • Email Service: Nodemailer
  • Security: Helmet.js, CORS, express-rate-limit
  • Validation: express-validator
  • Environment: dotenv
  • Logging: Morgan

DevOps & Tools

Git GitHub npm Figma

Deployment:

  • Frontend: Vercel
  • Backend: Render.com / Railway
  • Database: MongoDB Atlas
  • CI/CD: GitHub Actions

✨ Features

🏠 Landing Page

  • Animated hero section with typing effect
  • Interactive code terminal simulation
  • Smooth scroll navigation
  • Call-to-action buttons
  • Social media links

πŸ‘€ About Section

  • Professional summary
  • Interactive skill cards with proficiency levels
  • Technology stack visualization
  • Educational background
  • Professional journey timeline

πŸ’» Skills Section

  • Categorized skills (Frontend, Backend, Tools, Concepts)
  • Interactive skill bars with proficiency indicators
  • Hover animations and detailed descriptions
  • Years of experience metrics
  • Expandable skill categories

🎯 Projects Showcase

  • Feature-rich project cards
  • Project filtering by technology/category
  • Detailed project modal with:
    • Project description and objectives
    • Technology stack used
    • Key features and highlights
    • Code snippets with syntax highlighting
    • Live demo links
    • GitHub repository links
    • Project screenshots/mockups

πŸ’Ό Experience Timeline

  • Professional experience timeline
  • Educational background
  • Achievements and responsibilities
  • Internship highlights
  • Company logos and links

πŸ“¬ Contact Form

  • Functional contact form with validation
  • Real-time form feedback
  • Email notifications sent to inbox
  • Success/Error messages
  • Rate limiting to prevent spam
  • Fully functional backend integration

πŸŒ™ Dark/Light Mode

  • Toggle between themes
  • Persists user preference
  • System preference detection
  • Smooth transitions

πŸ“± Responsive Design

  • Mobile-first approach
  • Touch-friendly interface
  • Optimized for all devices
  • Cross-browser compatibility

βš™οΈ Additional Features

  • SEO optimization with meta tags
  • Open Graph for social sharing
  • Sitemap generation
  • robots.txt configuration
  • Google Analytics integration
  • Performance optimization
  • Lighthouse score: 90+

πŸ“‚ Project Structure

portfolio/
β”‚
β”œβ”€β”€ client/                          # React Frontend
β”‚   β”œβ”€β”€ public/
β”‚   β”‚   β”œβ”€β”€ index.html
β”‚   β”‚   β”œβ”€β”€ sitemap.xml
β”‚   β”‚   └── robots.txt
β”‚   β”œβ”€β”€ src/
β”‚   β”‚   β”œβ”€β”€ components/
β”‚   β”‚   β”‚   β”œβ”€β”€ Header.jsx
β”‚   β”‚   β”‚   β”œβ”€β”€ Hero.jsx
β”‚   β”‚   β”‚   β”œβ”€β”€ About.jsx
β”‚   β”‚   β”‚   β”œβ”€β”€ Skills.jsx
β”‚   β”‚   β”‚   β”œβ”€β”€ Projects.jsx
β”‚   β”‚   β”‚   β”œβ”€β”€ ProjectCard.jsx
β”‚   β”‚   β”‚   β”œβ”€β”€ Experience.jsx
β”‚   β”‚   β”‚   β”œβ”€β”€ Contact.jsx
β”‚   β”‚   β”‚   β”œβ”€β”€ Footer.jsx
β”‚   β”‚   β”œβ”€β”€ pages/
β”‚   β”‚   β”‚   β”œβ”€β”€ Home.jsx
β”‚   β”‚   β”‚   └── NotFound.jsx
β”‚   β”‚   β”œβ”€β”€ styles/
β”‚   β”‚   β”‚   β”œβ”€β”€ index.css
β”‚   β”‚   β”‚   β”œβ”€β”€ animations.css
β”‚   β”‚   β”‚   └── responsive.css
β”‚   β”‚   β”œβ”€β”€ utils/
β”‚   β”‚   β”‚   β”œβ”€β”€ api.js
β”‚   β”‚   β”‚   └── constants.js
β”‚   β”‚   β”œβ”€β”€ hooks/
β”‚   β”‚   β”‚   β”œβ”€β”€ useIntersection.js
β”‚   β”‚   β”‚   └── useTheme.js
β”‚   β”‚   β”œβ”€β”€ App.jsx
β”‚   β”‚   └── index.js
β”‚   β”œβ”€β”€ .env.example
β”‚   └── package.json
β”‚
β”œβ”€β”€ server/                          # Node.js Backend
β”‚   β”œβ”€β”€ routes/
β”‚   β”‚   β”œβ”€β”€ projects.js
β”‚   β”‚   β”œβ”€β”€ contact.js
β”‚   β”‚   └── skills.js
β”‚   β”œβ”€β”€ controllers/
β”‚   β”‚   β”œβ”€β”€ projectController.js
β”‚   β”‚   β”œβ”€β”€ contactController.js
β”‚   β”‚   └── skillController.js
β”‚   β”œβ”€β”€ models/
β”‚   β”‚   β”œβ”€β”€ Project.js
β”‚   β”‚   β”œβ”€β”€ Contact.js
β”‚   β”‚   └── Skill.js
β”‚   β”œβ”€β”€ middleware/
β”‚   β”‚   β”œβ”€β”€ errorHandler.js
β”‚   β”‚   β”œβ”€β”€ validation.js
β”‚   β”‚   └── cors.js
β”‚   β”œβ”€β”€ config/
β”‚   β”‚   β”œβ”€β”€ database.js
β”‚   β”‚   └── email.js
β”‚   β”œβ”€β”€ .env.example
β”‚   β”œβ”€β”€ server.js
β”‚   └── package.json
β”‚
β”œβ”€β”€ .gitignore
β”œβ”€β”€ README.md
└── package.json (root)

πŸš€ Installation

Prerequisites

  • Node.js (v18 or higher)
  • npm or yarn package manager
  • MongoDB (local or MongoDB Atlas account)
  • Git

Backend Setup

  1. Clone the repository:
git clone https://github.com/Ashwin-Chavhan/Portfolio-Website.git
cd Portfolio-Website/server
  1. Install dependencies:
npm install
  1. Create environment file:
cp .env.example .env
  1. Configure environment variables (see Environment Variables)

  2. Start the backend server:

npm start

Backend will run on: http://localhost:5000

Frontend Setup

  1. Navigate to client directory:
cd portfolio/client
  1. Install dependencies:
npm install
  1. Create environment file:
cp .env.example .env.local
  1. Configure environment variables:
REACT_APP_API_BASE_URL=http://localhost:5000
REACT_APP_GA_ID=your_google_analytics_id
  1. Start the development server:
npm start

Frontend will run on: http://localhost:3000


βš™οΈ Environment Variables

Backend (.env)

# MongoDB Connection
MONGODB_URI=mongodb+srv://username:password@cluster.mongodb.net/portfolio

# Server Configuration
PORT=5000
NODE_ENV=development

# CORS Configuration
CORS_ORIGIN=http://localhost:3000

# Email Service (Nodemailer)
EMAIL_SERVICE=gmail
EMAIL_USER=your_email@gmail.com
EMAIL_PASSWORD=your_app_password

# Recipient Email
RECIPIENT_EMAIL=ashwinc763@gmail.com

# JWT Secret (if using authentication)
JWT_SECRET=your_jwt_secret_key

# Rate Limiting
RATE_LIMIT_WINDOW_MS=900000
RATE_LIMIT_MAX_REQUESTS=100

Frontend (.env.local)

REACT_APP_API_BASE_URL=http://localhost:5000
REACT_APP_GA_ID=your_google_analytics_id
REACT_APP_ENVIRONMENT=development

πŸ“‘ API Documentation

Base URL

http://localhost:5000/api

Endpoints

GET /projects

Fetch all projects

Response:

{
  "success": true,
  "data": [
    {
      "_id": "123abc",
      "title": "E-Learning Platform",
      "description": "Web-based learning platform...",
      "technologies": ["React", "Node.js", "MongoDB"],
      "liveLink": "https://example.com",
      "githubLink": "https://github.com/...",
      "featured": true
    }
  ]
}

GET /projects/:id

Fetch single project by ID

Response:

{
  "success": true,
  "data": {
    /* project object */
  }
}

POST /contact

Submit contact form

Request Body:

{
  "name": "John Doe",
  "email": "john@example.com",
  "subject": "Inquiry",
  "message": "Your message here..."
}

Response:

{
  "success": true,
  "message": "Message sent successfully!",
  "data": { "id": "123abc" }
}

GET /skills

Fetch all skills

Response:

{
  "success": true,
  "data": [
    {
      "_id": "123abc",
      "category": "Frontend",
      "name": "React JS",
      "proficiency": 85,
      "yearsOfExperience": 1.5
    }
  ]
}

🎯 Projects Showcase

1. E-Learning (E-Commerce) Platform

πŸ“Œ MCA Final Year Project (Apr 2024 – Jun 2024)

A comprehensive web-based learning platform combining educational content management with e-commerce functionality.

Features:

  • User authentication & authorization
  • Dynamic course listings with categories
  • Content Management System (CMS)
  • Shopping cart & checkout system
  • Payment gateway integration (planned)
  • Responsive design
  • Real-time content updates

Technologies:

  • Frontend: HTML, CSS, JavaScript, Bootstrap, jQuery, Ajax
  • Backend: PHP, XAMPP Server
  • Database: MY SQL
  • Authentication: JWT

Live Demo: [https://github.com/Ashwin-Chavhan/E-Learn-Avenue] GitHub: View Repository


2. Responsive Portfolio Websites

πŸ“Œ Internship Project (Feb 2024 – Jul 2024) | Topstech Pvt Ltd

Developed multiple client-facing responsive websites with modern design and optimal performance.

Features:

  • Mobile-first responsive design
  • Cross-browser compatibility testing
  • Form validation with AJAX
  • SEO optimization
  • Performance optimization
  • Database integration

Technologies:

  • Frontend: HTML5, CSS3, JavaScript, Bootstrap, jQuery
  • Backend: PHP, MySQL
  • Tools: XAMPP, Git

Client Websites: 5+ live projects


3. Personal Portfolio Website (This Project)

πŸ“Œ Personal Project (2024 – Present)

A modern, fully functional portfolio website showcasing full-stack development capabilities.

Features:

  • Full MERN stack implementation
  • Interactive animations & effects
  • Functional contact form with email notifications
  • Project filtering & search
  • Dark/Light mode toggle
  • Mobile-responsive design
  • SEO optimized
  • Performance optimized (Lighthouse: 90+)

Technologies:

  • Frontend: React, Tailwind CSS, Framer Motion
  • Backend: Node.js, Express, MongoDB
  • Deployment: Vercel, Render.com, MongoDB Atlas

Live Demo: ashwinchavhan.com GitHub: View Repository


⚑ Performance

Lighthouse Scores

Performance:  95/100
Accessibility: 92/100
Best Practices: 94/100
SEO: 98/100

Optimization Techniques

  • βœ… Code splitting with React.lazy()
  • βœ… Image optimization with lazy loading
  • βœ… Tree shaking for unused code removal
  • βœ… CSS minification and compression
  • βœ… Gzip compression
  • βœ… CDN for static assets
  • βœ… Browser caching strategy
  • βœ… Critical CSS inlining

Page Load Time

  • First Contentful Paint (FCP): < 1.5s
  • Largest Contentful Paint (LCP): < 2.5s
  • Cumulative Layout Shift (CLS): < 0.1
  • Time to Interactive (TTI): < 3.5s

πŸ”’ Security

Implemented Security Measures

  • βœ… CORS properly configured
  • βœ… HTTPS/SSL enabled
  • βœ… Helmet.js security headers
  • βœ… Rate limiting on API endpoints
  • βœ… Input validation & sanitization
  • βœ… XSS protection (DOMPurify)
  • βœ… CSRF protection
  • βœ… Environment variables for sensitive data
  • βœ… MongoDB injection prevention
  • βœ… Secure headers (CSP, X-Frame-Options, X-Content-Type-Options)

Best Practices

  • No sensitive data in frontend
  • API keys stored securely
  • Regular dependency updates
  • Error handling without exposing internals
  • Secure password handling
  • Audit logging for critical operations

πŸ“¦ Deployment

Frontend Deployment (Vercel)

# Deploy with Netlify
Netlify

# Or connect GitHub repository to Netlify dashboard
# Automatic deployments on push to main branch

Live URL: ashwinchavhan.com

Backend Deployment (Render.com)

  1. Push code to GitHub repository
  2. Connect Render.com to GitHub
  3. Configure environment variables
  4. Deploy

API URL: https://portfolio-api.render.com

Database (MongoDB Atlas)

  1. Create MongoDB Atlas account
  2. Create a cluster
  3. Get connection string
  4. Add to .env file
  5. Database automatically synced

🀝 Contributing

Contributions, issues, and feature requests are welcome!

For Major Changes:

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

Development Workflow:

# Install dependencies
npm install

# Start development servers
npm run dev

# Build for production
npm run build

# Run tests
npm test

# Lint code
npm run lint

πŸ“ž Contact

I'm open to opportunities and collaborations!


πŸ“œ License

This project is open source and available under the MIT License.


πŸ™ Acknowledgments

  • Thanks to RTMNU IICC, Nagpur for the MCA degree
  • Thanks to Topstech Pvt Ltd for the internship opportunity
  • Inspired by modern design practices and developer aesthetics
  • Built with ❀️ and coffee

Made with ❀️ by Ashwin Chavhan

⭐ If you find this portfolio helpful, please consider giving it a star!

Back to Top

Releases

No releases published

Packages

 
 
 

Contributors