TypeScript MIT

3d-portfolio

Modern 3D Portfolio using React, Three.js and Typescript

S

sanidhyy

Dernière activité 29 sept. 2026
sanidhyy/3d-portfolio

297

étoiles

71

forks

0

issues ouvertes

3d3d-portfoliocsshtmljavascriptjsnetlifyportfolioreactreactjsresendtailwindcssthreejs

Ce README est souvent en anglais.

Modern 3D Portfolio using React, Three.js and Typescript

Modern 3D Portfolio using React, Three.js and Typescript

Ask Me Anything! GitHub license Maintenance GitHub branches Github commits GitHub issues GitHub pull requests Netlify status

📔 Table of Contents

‼️ Folder Structure

Here is the folder structure of this app.

3d-portfolio/
  |- netlify/
    |-- functions/
  |- public/
  |- src/
    |-- assets/
    |-- components/
      |--- canvas/
      |--- about.tsx
      |--- banner.tsx
      |--- contact.tsx
      |--- experience.tsx
      |--- feedbacks.tsx
      |--- footer.tsx
      |--- hero.tsx
      |--- index.ts
      |--- loader.tsx
      |--- navbar.tsx
      |--- tech.tsx
      |--- works.tsx
    |-- constants/
      |--- index.ts
    |-- hoc/
      |--- index.ts
      |--- section-wrapper.tsx
    |-- hooks/
      |--- use-in-view.ts
      |--- use-limited-webgl.ts
    |-- lib/
      |--- contact.ts
    |-- utils/
      |--- lib.ts
      |--- motion.ts
    |-- app.tsx
    |-- env.d.ts
    |-- index.css
    |-- main.tsx
    |-- styles.ts
  |- .env.example
  |- .env/.env.local
  |- .gitignore
  |- index.html
  |- netlify.toml
  |- package.json
  |- pnpm-lock.yaml
  |- pnpm-workspace.yaml
  |- tsconfig.json
  |- vite.config.ts

🧰 Getting Started

  1. Make sure Git and NodeJS is installed.
  2. Clone this repository to your local computer.
  3. Create .env file in root directory.
  4. Contents of .env:
# resend
RESEND_API_KEY="re_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
RESEND_FROM_EMAIL="Your Name <me@example.com>"
CONTACT_TO_EMAIL="contact@example.com"
CONTACT_SITE_URL="https://example.com"
RESEND_TEMPLATE_CONTACT_USER="contact-thank-you"
RESEND_TEMPLATE_CONTACT_ADMIN="contact-admin"

# google recaptcha v3
VITE_RECAPTCHA_SITE_KEY="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
RECAPTCHA_SECRET_KEY="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
RECAPTCHA_MIN_SCORE="0.5"
  1. Create an account at Resend and add + verify a sending domain.

  2. Create an API key at Resend API Keys with Sending access. Copy it to RESEND_API_KEY.

  3. Set RESEND_FROM_EMAIL to an address on that verified domain. Set CONTACT_TO_EMAIL to the inbox that should receive new contact notifications. Set CONTACT_SITE_URL to your site's public URL (no trailing slash).

  4. In Resend Templates, create two templates and Publish each.

    Template 1 — thank you to the user

    • Name: contact-thank-you
    • Variables: USER_NAME, USER_MESSAGE, SITE_URL

    Template 2 — new message to admin

    • Name: contact-admin
    • Variables: USER_NAME, USER_EMAIL, USER_MESSAGE, SITE_URL

    Copy each template's alias into RESEND_TEMPLATE_CONTACT_USER and RESEND_TEMPLATE_CONTACT_ADMIN.

  5. Create a Google reCAPTCHA v3 project. Choose Score based (v3), add your production domain(s) and localhost, then copy the Site key to VITE_RECAPTCHA_SITE_KEY and the Secret key to RECAPTCHA_SECRET_KEY.

  6. Open terminal in root directory. Run npm install --legacy-peer-deps or pnpm install --legacy-peer-deps.

  7. Now the app is fully configured 👍 and you can start it with npm run dev or pnpm dev.

NOTE: Please make sure to keep your API keys and configuration values secure and do not expose them publicly.

🙋 Need Help?

If you run into issues during installation or setup:

📷 Screenshots:

Showcase your skills

Showcase your projects

Modern UI/UX

Functional Contact form

⚙️ Tech Stack

React JS Vite JS Typescript Tailwind CSS Netlify

🔧 Stats

Stats for 3D Portfolio

🙌 Contribute

You might encounter some bugs while using this app. You are more than welcome to contribute. Just submit changes via pull request and I will review them before merging. Make sure you follow community guidelines.

💎 Acknowledgements

Useful resources and dependencies that are used in 3D Portfolio.

☕ Buy Me a Coffee

🚀 Follow Me

GitHub followers Twitter

📚 Learn More

You can learn more in the Create React App documentation.

To learn React, check out the React documentation.

Code Splitting

This section has moved here: https://facebook.github.io/create-react-app/docs/code-splitting

Analyzing the Bundle Size

This section has moved here: https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size

Making a Progressive Web App

This section has moved here: https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app

Advanced Configuration

This section has moved here: https://facebook.github.io/create-react-app/docs/advanced-configuration

Deployment

This section has moved here: https://facebook.github.io/create-react-app/docs/deployment

pnpm run build fails to minify

This section has moved here: https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify

📃 Deploy on Netlify

The easiest way to deploy your Vite.js app is to use the Netlify Platform.

Check out Vite.js deployment documentation for more details.

⭐ Give A Star

You can also give this repository a star to show more people and they can use this repository.

🌟 Star History

Star History Chart

(back to top)

Projets similaires

3d portfolio website which devs can use

TypeScript
Aakashrmalhotra
402 étoiles256

Modern Portfolio using Next.js and Framer Motion.

TypeScript3d-portfolio3d-websiteanimation
Ssanidhyy
277 étoiles111

My Portfolio Website Showcasing the website 3d interactions or experience and my work.

TypeScriptdesigngsapjavascript
MMoncyDev
1,2 k étoiles487