Free-stack portfolio using Next.js 14 (App Router), Tailwind, Framer Motion, Cloudinary, and Vercel.
- Create
.env.localwith:
NEXT_PUBLIC_CLOUDINARY_CLOUD_NAME=your_cloud_name
CLOUDINARY_API_KEY=your_api_key
CLOUDINARY_API_SECRET=your_api_secret
ADMIN_PASSCODE=change-me
NEXT_PUBLIC_CLOUDINARY_UNSIGNED_PRESET=unsigned-upload
- Install & run:
npm install
npm run dev
- Deploy:
- Push to GitHub (connected to Vercel)
- Add the same env vars in Vercel Project Settings → Environment Variables
- Visit
/adminand use the upload widget - Images are stored under
folder=portfoliowith tagportfolio /gallerylists them automatically via the server route
- Edit brand tokens and glass styles in
src/app/globals.css - Add projects in
src/content/projects.json - Update social links in
src/content/socials.ts