A modern, interactive React portfolio website showcasing software engineering projects, skills, and professional experience. Built with performance-optimized animations, real-time features, and responsive design.
- Interactive Animations: Smooth Framer Motion animations with performance optimizations
- Dark/Light Theme: Toggle between themes with seamless transitions
- Real-time Comments: PostgreSQL-powered commenting system with Netlify Functions
- Contact Form: Integrated email functionality using EmailJS
- Particle System: Dynamic background particles with GPU acceleration
- Responsive Design: Mobile-first approach with Tailwind CSS
- Performance Optimized: Throttled scroll handlers, CSS animations, and reduced motion support
- React 18 - Modern React with hooks and functional components
- Framer Motion - Advanced animations and transitions
- Tailwind CSS - Utility-first CSS framework
- EmailJS - Client-side email functionality
- Netlify Functions - Serverless backend functions
- PostgreSQL (Neon) - Cloud database for comments system
- Nodemailer - Server-side email handling
- Vite - Fast build tool and development server
- Netlify - Hosting and serverless functions
- Git - Version control
- Node.js 18 or higher
- npm or yarn package manager
- PostgreSQL database (Neon recommended)
-
Clone the repository
git clone https://github.com/yourusername/phyominthein-portfolio.git cd phyominthein-portfolio -
Install dependencies
npm install
-
Environment Setup
cp .env.example .env
Fill in your environment variables:
DATABASE_URL=your-neon-postgresql-connection-string EMAIL_USER=your-email@gmail.com EMAIL_PASS=your-app-password EMAIL_SERVICE=gmail
-
Database Setup
- Create a Neon PostgreSQL database
- Run the schema from
database/schema.sql
-
Start Development Server
npm start
phyominthein-portfolio/
├── public/ # Static assets
├── src/
│ ├── assets/ # Images, icons, and media files
│ ├── hooks/ # Custom React hooks
│ │ ├── useComments.js # Comments functionality
│ │ └── useContactForm.js # Contact form logic
│ ├── App.jsx # Main application component
│ └── index.css # Global styles
├── netlify/
│ └── functions/ # Serverless functions
│ └── comments.js # Comments API endpoints
├── database/
│ └── schema.sql # Database schema
└── netlify.toml # Netlify configuration
- Throttled Scroll Handlers: Reduced from multiple listeners to single throttled handler
- GPU Acceleration: Using
transform3dandwill-changeproperties - Reduced Particle Count: Optimized from 20 to 12 particles
- CSS Animations: Replaced heavy Framer Motion animations where appropriate
- Accessibility:
prefers-reduced-motionsupport
- Dynamic Typing Effect: Animated text with cursor
- Mouse Tracking: Smooth cursor following animations
- Scroll Progress: Visual scroll indicator
- Section Navigation: Smooth scrolling between sections
- Project Showcase: Interactive project gallery with details
-
Build the project
npm run build
-
Deploy to Netlify
- Connect your GitHub repository to Netlify
- Set environment variables in Netlify dashboard
- Deploy automatically on push to main branch
Add these in your Netlify site settings:
DATABASE_URLEMAIL_USEREMAIL_PASSEMAIL_SERVICE
npm start- Start development servernpm run build- Build for productionnpm test- Run test suitenpm run eject- Eject from Create React App (not recommended)
The portfolio is fully responsive and optimized for:
- Desktop: Full interactive experience with animations
- Tablet: Adapted layouts and touch-friendly interactions
- Mobile: Simplified animations and optimized performance
- Lazy Loading: Images and components loaded on demand
- Code Splitting: Optimized bundle sizes
- Caching: Static assets cached with long expiration
- Compression: Gzip compression enabled
- SEO Optimized: Meta tags and semantic HTML
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
Phyo Min Thein
- Portfolio: [Your Portfolio URL]
- Email: [Your Email]
- LinkedIn: [Your LinkedIn]
- GitHub: [Your GitHub]
⭐ Star this repository if you found it helpful!