A stunning 3D portfolio website showcasing AI & ML projects, work experience, and skills, built with React, TypeScript, Three.js, and GSAP featuring an interactive 3D character model and smooth animations.
- 3D Character Model: Interactive 3D character with mouse tracking and animations
- Smooth Animations: Powered by GSAP for buttery smooth transitions
- Responsive Design: Optimized for all device sizes
- Modern UI: Clean, professional design with gradient effects
- Performance Optimized: Fast loading with optimized assets
- SEO Friendly: Properly structured for search engines
- Frontend: React 18, TypeScript
- 3D Graphics: Three.js, React Three Fiber, React Three Drei
- Animations: GSAP, ScrollTrigger
- Physics: React Three Cannon, React Three Rapier
- Styling: CSS3 with custom properties
- Build Tool: Vite
- Deployment: Ready for Vercel, Netlify, or any static hosting
- Node.js 18+ and npm
- Git
-
Clone the repository
git clone https://github.com/Surajit00007/3D_Portfolio_website-1.git cd 3D_Portfolio_website-1 -
Install dependencies
npm install
-
Start development server
npm run dev
-
Open your browser Navigate to
http://localhost:5173(or the port shown in your terminal)
Edit src/config.ts to customize:
- Personal details (name, title, description)
- Social media links
- Skills and projects
- Contact information
The 3D character model is located in public/models/:
character.glb- Main 3D modelcharacter.enc- Encrypted model datachar_enviorment.hdr- Environment lighting
Customize colors and themes in:
src/index.css- Global styles and CSS variablessrc/components/styles/- Component-specific styles
# Start development server
npm run dev
# Build for production
npm run build
# Preview production build
npm run preview
# Run linting
npm run lintsrc/
βββ components/ # React components
β βββ Character/ # 3D character logic
β βββ styles/ # Component styles
β βββ utils/ # Utility functions
βββ config.ts # Configuration file
βββ context/ # React context providers
βββ data/ # Static data files
βββ utils/ # Global utilities
- Add project data to
src/config.tsunder theprojectsarray - Add project images to
public/images/ - Update the
Workcomponent if needed
The 3D character is controlled by:
src/components/Character/Scene.tsx- Main scene setupsrc/components/Character/utils/animationUtils.ts- Animation logicsrc/components/Character/utils/mouseUtils.ts- Mouse interaction
Update CSS variables in src/index.css:
:root {
--accentColor: #7f40ff;
--textColor: #ffffff;
--bgColor: #000000;
}-
Connect to Vercel
npm install -g vercel vercel
-
Deploy
vercel --prod
-
Build for production
npm run build
-
Serve the
distfolder using any static server:npx serve dist
- Check browser console for WebGL errors
- Ensure the model files are in
public/models/ - Try disabling browser extensions that might block WebGL
- Check if GSAP is properly loaded
- Ensure ScrollTrigger is registered
- Verify the component is mounted when animations trigger
- Reduce texture sizes in 3D models
- Optimize images in
public/images/ - Consider using
React.memofor heavy components
npm run dev- Start development servernpm run build- Build for productionnpm run preview- Preview production buildnpm run lint- Run ESLint
- 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 open source and available under the MIT License.
- GSAP for amazing animation capabilities
- Three.js for 3D graphics
- React Three Fiber for React integration
- Vite for fast development experience
Built with β€οΈ by Surajit Sahoo
