Live: https://jeraldineportfolio.vercel.app
This is my interactive 3D portfolio, built with React, Vite, Tailwind CSS, and React Three Fiber. It showcases my projects, skills, and experience in a clean, modern interface. The site is fully responsive and deployed on Vercel.
React 18, Vite, Tailwind CSS, Three.js (React Three Fiber & Drei), React Router, EmailJS
- Interactive 3D models and smooth animations
- Modern, responsive design
- Project GIF stack preview
- Contact form (EmailJS, no backend required)
- Pre-build asset validation for reliability
- Install dependencies:
npm install
- Copy
.env.exampleto.envand add your EmailJS credentials:VITE_APP_EMAILJS_SERVICE_ID=your_service_id VITE_APP_EMAILJS_TEMPLATE_ID=your_template_id VITE_APP_EMAILJS_PUBLIC_KEY=your_public_key
- Start the dev server:
Open the URL shown in the terminal (usually http://localhost:5173).
npm run dev
- To build and preview production:
npm run build npm run preview
Used for the contact form (see src/pages/Contact.jsx):
VITE_APP_EMAILJS_SERVICE_IDVITE_APP_EMAILJS_TEMPLATE_IDVITE_APP_EMAILJS_PUBLIC_KEY
Do not commit secrets. Use .env.example as a template.
npm run devStart the dev servernpm run buildPre-build asset check, then build for productionnpm run previewPreview the production buildnpm run check:assetsVerify all icons exist on disk
src/ assets/ 3d/ (3D models) icons/ (SVG icons) images/ (GIFs, images) components/ (UI components) hooks/ (Custom hooks) models/ (3D model components) pages/ (Home, About, Projects, Contact) constants/ (Static data) main.jsx (App entry) App.jsx (Root layout)
Other files:
vite.config.jsVite configvercel.jsonVercel deployment configscripts/check-assets.jsPre-build asset check
- 3D scenes and models rendered with React Three Fiber
- Routing with React Router
- Contact form uses EmailJS (no backend needed)
- Asset check script ensures all icons exist before build
- Asset check fails: Make sure all icons in
src/assets/icons/index.jsexist - Black screen: Check for missing assets or build errors
- Email not sending: Confirm EmailJS variables are set locally and on Vercel
Open to suggestions and improvements. PRs welcome.
This project is provided as-is. Add a LICENSE file if you plan to distribute.