public 3d-motion repository
modern-portfolio
// sanidhyy/modern-portfolio
Modern Portfolio using Next.js and Framer Motion.
Modern Portfolio using Next.js and Framer Motion

:notebook_with_decorative_cover: Table of Contents
- Folder Structure
- Getting Started
- Screenshots
- Tech Stack
- Stats
- Contribute
- Acknowledgements
- Buy Me a Coffee
- Follow Me
- Learn More
- Deploy on Vercel
- Give A Star
- Star History
- Give A Star
:bangbang: Folder Structure
Here is the folder structure of this app.
modern-portfolio/
|- app/
|-- about/
|-- api/
|-- contact/
|-- services/
|-- testimonials/
|-- work/
|-- globals.css
|-- layout.tsx
|-- page.tsx
|-- template.tsx
|- components/
|-- Avatar.tsx
|-- Bulb.tsx
|-- Circles.tsx
|-- Header.tsx
|-- Nav.tsx
|-- ParticlesContainer.tsx
|-- ProjectsBtn.tsx
|-- ServiceSlider.tsx
|-- Socials.tsx
|-- TestimonialSlider.tsx
|-- TopLeftImg.tsx
|-- Transition.tsx
|-- WorkSlider.tsx
|- lib/
|-- contact.ts
|- public/
|- .env.example
|- .env/.env.local
|- .gitignore
|- environment.d.ts
|- eslint.config.mjs
|- netlify.toml
|- next.config.ts
|- package.json
|- pnpm-lock.yaml
|- pnpm-workspace.yaml
|- postcss.config.mjs
|- tsconfig.json
|- variants.ts
:toolbox: Getting Started
-
Make sure Git and NodeJS is installed.
-
Clone this repository to your local computer.
-
Create
.env.localfile in root folder. -
Contents of
.env.local:
# disabled next.js telemetry
NEXT_TELEMETRY_DISABLED="1"
# resend
RESEND_API_KEY="re_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
RESEND_FROM_EMAIL="Your Name <me@example.com>"
CONTACT_TO_EMAIL="contact@example.com"
CONTACT_SITE_URL="https://awersome-portfolio.netlify.app"
RESEND_TEMPLATE_CONTACT_USER="contact-thank-you"
RESEND_TEMPLATE_CONTACT_ADMIN="contact-admin"
# google recaptcha v3
NEXT_PUBLIC_RECAPTCHA_SITE_KEY="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
RECAPTCHA_SECRET_KEY="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
RECAPTCHA_MIN_SCORE="0.5"
-
Create an account at Resend and add + verify a sending domain.
-
Create an API key at Resend API Keys with Sending access. Copy it to
RESEND_API_KEY. -
Set
RESEND_FROM_EMAILto an address on that verified domain. SetCONTACT_TO_EMAILto the inbox that should receive new contact notifications (required). SetCONTACT_SITE_URLto your site's public URL (no trailing slash). -
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_USERandRESEND_TEMPLATE_CONTACT_ADMIN. - Name:
-
Create a Google reCAPTCHA v3 project. Choose Score based (v3), add your production domain(s) and
localhost, then copy the Site key toNEXT_PUBLIC_RECAPTCHA_SITE_KEYand the Secret key toRECAPTCHA_SECRET_KEY. -
Open terminal in root directory. Run
npm install --legacy-peer-depsorpnpm install --legacy-peer-deps. -
Now the app is fully configured 👍 and you can start it with
npm run devorpnpm dev.
NOTE: Ensure you don't share these keys publicly.
:raising_hand: Need Help?
If you run into issues during installation or setup:
- GitHub Discussions — Open a Q&A discussion for setup and troubleshooting help.
- Email — sanidhyyy@gmail.com
- Discord —
@sanidhyy
:camera: Screenshots:




:gear: Tech Stack
:wrench: Stats
:raised_hands: 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.
:gem: Acknowledgements
Useful resources and dependencies that are used in Modern Portfolio.
- @tailwindcss/postcss: ^4.3.3
- @tsparticles/engine: ^4.4.0
- @tsparticles/react: ^4.4.0
- @types/node: ^26.6.1
- @types/react: ^19.2.18
- @types/react-dom: ^19.2.7
- eslint: ^9.39.5
- eslint-config-next: 16.3.5
- framer-motion: ^13.3.0
- next: 16.3.5
- postcss: ^8.5.28
- react: 19.2.8
- react-countup: ^6.4.2
- react-dom: 19.2.8
- react-google-recaptcha-v3: ^1.11.0
- react-hot-toast: ^2.6.0
- react-icons: ^5.7.0
- resend: ^6.28.1
- swiper: ^14.2.0
- tailwindcss: ^4.3.3
- tsparticles: ^4.4.0
- typescript: ^6.0.3
:coffee: Buy Me a Coffee
[
](https://www.buymeacoffee.com/sanidhy "Buy me a Coffee")
:rocket: Follow Me
:books: Learn More
To learn more about Next.js, take a look at the following resources:
- Next.js Documentation - learn about Next.js features and API.
- Learn Next.js - an interactive Next.js tutorial.
You can check out the Next.js GitHub repository - your feedback and contributions are welcome!
:page_with_curl: Deploy on Vercel
The easiest way to deploy your Next.js app is to use the Vercel Platform from the creators of Next.js.
Check out Next.js deployment documentation for more details.
:star: Give A Star
You can also give this repository a star to show more people and they can use this repository.
:star2: Star History
[INFO] 3 topics link to curated motion topic pages.