A modern, responsive portfolio website built with React, Vite, Tailwind CSS, and Three.js featuring smooth animations and 3D elements.
- 🎨 Modern Design: Black and purple theme with smooth animations
- 📱 Fully Responsive: Mobile-first design with hamburger navigation
- 🎭 Smooth Animations: Framer Motion for beautiful transitions
- 🌐 3D Integration: Three.js laptop model with interactive controls
- ⚡ Fast Performance: Built with Vite for optimal loading speeds
- 🎯 SEO Optimized: Proper meta tags and semantic HTML
- Frontend: React 18, Vite
- Styling: Tailwind CSS
- Animations: Framer Motion
- 3D Graphics: Three.js, React Three Fiber, Drei
- Icons: React Icons
- Development: Hot Module Replacement (HMR)
- 🏠 Hero - Introduction with 3D laptop model
- 👨💻 About - Professional bio and tech focus
- 🛠️ Skills - Tech stack with animated icons
- 📂 Projects - Portfolio showcase with live links
- 💬 Testimonials - Client feedback carousel
- 📞 Contact - Contact form and social links
- 🔗 Footer - Quick links and social media
- Node.js (v16 or higher)
- npm or yarn
- Clone the repository:
git clone <your-repo-url>
cd mugabe-portfolio- Install dependencies:
npm install- Start the development server:
npm run dev- Open your browser and visit
http://localhost:5173
- Logo: Replace
/public/logo.svgwith your actual logo - Photo: Replace
/public/me.jpegwith your professional photo - 3D Model: Add your laptop model files to
/public/laptop/
- Personal Info: Edit contact details in
Contact.jsxandFooter.jsx - Bio: Update the about section in
About.jsx - Projects: Modify project links and descriptions in
Projects.jsx - Social Links: Update social media URLs in contact and footer components
- Place your
.gltfor.glbfile in/public/laptop/ - Update
LaptopModel.jsxto load your model:
import { useGLTF } from '@react-three/drei'
const { nodes, materials } = useGLTF('/laptop/your-model.gltf')- Mobile: < 768px (hamburger menu, stacked layout)
- Tablet: 768px - 1024px (adjusted spacing)
- Desktop: > 1024px (full layout)
- Code Splitting: Automatic route-based splitting
- Image Optimization: Responsive images with fallbacks
- 3D Model Loading: Suspense boundaries for smooth loading
- Error Boundaries: Graceful error handling
npm run buildnpm install -g vercel
vercel --prod- Build the project:
npm run build - Upload the
distfolder to Netlify
- Email: mugabeherve7@gmail.com
- Phone: +250 781 908 314
- Location: Rwanda
Feel free to fork this project and customize it for your own portfolio!
This project is open source and available under the MIT License.
Built with ❤️ and lots of coffee ☕ by Mugabe