A modern personal portfolio built with React, TypeScript, Vite, Three.js, and Sanity CMS.
This project is a 3D portfolio website featuring:
- Animated hero section with 3D visuals
- Responsive navigation
- About, Experience, Technologies, Works, and Contact sections
- Interactive 3D canvas (Stars, Earth, Computers, Ball components)
- Sanity Studio for content management
- Email form integration with EmailJS
- React
- TypeScript
- Vite
- Tailwind CSS
- Sass
- Three.js with
@react-three/fiberand@react-three/drei - Framer Motion
- Sanity CMS
- EmailJS
- gh-pages for deployment
From the project root:
npm install— install dependenciesnpm run dev— start the Vite development servernpm run build— build the production sitenpm run preview— preview the production build locallynpm run typecheck— run TypeScript type checkingnpm run deploy— build and publish to GitHub Pages
Sanity Studio commands from the root:
npm run studio— start the Sanity Studio in development modenpm run studio:build— build the Sanity Studio for productionnpm run studio:deploy— deploy the Sanity Studio
src/— main application sourcecomponents/— reusable UI and page sectionscomponents/canvas/— 3D canvas componentssanity/— Sanity client and query helpershooks/— custom hookstypes/— TypeScript definitionsutils/— motion and helper utilities
public/— static assets and texturesstudio/— Sanity Studio project
- Clone the repository.
- Install dependencies:
npm install
- Start the development server:
npm run dev
- Open the site in your browser at the URL shown in the terminal.
The studio/ folder contains a separate Sanity Studio app for editing portfolio content.
To work with Studio:
npm run studioThen open the local Studio URL shown in the terminal.
The site uses GitHub Pages for deployment. Run:
npm run deployThis builds the app and publishes the build folder to the gh-pages branch.
- The project is configured as a private repo app, so GitHub Pages deployment is optional.
- Ensure Sanity environment variables and project configuration are set before using Studio.