A modern, interactive portfolio website built with React, Three.js, and advanced animations. Featuring a dynamic hero section, 3D elements, smooth transitions, and a customizable theme system.
- 3D Interactive Hero Section - Stunning Three.js-powered hero with camera animations
- Smooth Transitions - GSAP-powered animations and transitions throughout
- Theme Customization - 6+ built-in theme options with live switching
- Project Carousel - Interactive carousel showcasing your projects with navigation arrows
- Responsive Design - Fully responsive across all devices
- Performance Optimized - Fast load times with Vite's instant module replacement
- Accessibility - Built with semantic HTML and accessibility best practices
- Dark Mode Compatible - Adapts to system preferences
- React 19.0 - UI library
- Vite 6.2 - Lightning-fast build tool
- TypeScript - Type-safe configuration
- Three.js 0.174 - 3D graphics library
- React Three Fiber 9.1 - React renderer for Three.js
- React Three Drei 10.0 - Useful helpers for React Three Fiber
- GSAP 3.12 - Professional animation library
- Motion 12.23 - Animation library for React
- Tailwind CSS 4.0 - Utility-first CSS framework
- Chroma.js 3.1 - Color utility library
- Leva 0.10 - Debug UI for parameters
- Blobity 0.2 - Interactive blob cursor effect
- React Globe.gl 2.27 - Interactive 3D globe component
- React Responsive 10.0 - Responsive design utilities
- Node.js (v18+)
- npm or yarn
# Clone the repository
git clone https://github.com/yourusername/portfolio.git
cd portfolio
# Install dependencies
npm install
# Start development server
npm run dev
# Build for production
npm run build
# Preview production build
npm run preview# Start local dev server with HMR
npm run dev
# Start dev server accessible on network
npm run dev:network
# Run ESLint
npm run lint# Build optimized production bundle
npm run build
# Preview production build locally
npm run previewEdit src/constants/colorPalettes.js to modify existing themes or add new ones:
export const colorPalettes = {
yourTheme: {
primary: '#FF6B6B',
secondary: '#4ECDC4',
accent: '#FFE66D',
// ... more colors
}
}- About - Edit
src/sections/About.jsx - Experience - Edit
src/sections/Experience.jsx - Projects - Edit
src/sections/Projects.jsxand update carousel cards - Education - Edit
src/sections/Education.jsx - Contact - Edit
src/sections/Contact.jsx
Place custom 3D models, fonts, and images in:
- Models:
src/assets/models/ - Fonts:
src/assets/fonts/ - Icons:
src/assets/icons/
# Build the project
npm run build
# The dist/ folder is ready to deployPush the dist/ folder contents to the gh-pages branch or configure GitHub Actions.
# Install Vercel CLI
npm i -g vercel
# Deploy
vercel# Build
npm run build
# Deploy dist/ folder to Netlify- Modify
vite.config.jsfor build optimization - Configure
@vitejs/plugin-reactfor JSX transformation
- Rules defined in
eslint.config.js - Includes React and React Hooks linting
- Configure in
tailwind.config.js - Global styles in
src/index.css
- 3D camera animations on scroll
- Responsive canvas sizing
- Smooth transitions
- 6 built-in themes (Cyberpunk, OceanBlue, Sunset, MintFresh, NeonGreen, GoldenTwilight, RetroWave)
- Live theme switching with context API
- Persistent theme selection
- Mobile-first approach
react-responsivefor breakpoints- Tailwind CSS utility classes
- Code splitting with Vite
- Image optimization
- Lazy loading for components
This project is open source and available under the MIT License.
- GitHub: @tabries
- LinkedIn: Gabriel Martínez Ayala
- Email: gamartinezayala@gmail.com
Made with ❤️ using React, Three.js, and lots of coffee ☕