A modern, animated portfolio website built with Next.js 15, featuring real-time Spotify integration, GitHub contributions visualization, and smooth scroll animations.
- Framework: Next.js 15 with App Router
- Language: TypeScript
- Styling: Tailwind CSS v4
- Animations: Motion (Framer Motion)
- Smooth Scrolling: Locomotive Scroll
- UI Components: Radix UI, Tabler Icons, React Icons
- Analytics: Vercel Analytics
- Deployment: Optimized for Vercel
- Node.js 18+
- npm, yarn, pnpm, or bun
- Clone the repository:
git clone https://github.com/M-SaaD-H/portfolio.git
cd portfolio- Install dependencies:
npm install
# or
yarn install
# or
pnpm install- Set up environment variables:
Create a
.env.localfile in the root directory:
# Spotify API (optional - for Spotify integration)
SPOTIFY_CLIENT_ID=your_spotify_client_id
SPOTIFY_CLIENT_SECRET=your_spotify_client_secret
SPOTIFY_REFRESH_TOKEN=your_spotify_refresh_token
# GitHub API (optional - for contributions graph)
GITHUB_USERNAME=your_github_username
GITHUB_TOKEN=your_github_personal_access_token- Run the development server:
npm run dev
# or
yarn dev
# or
pnpm dev- Open http://localhost:3000 in your browser.
portfolio/
├── public/
│ ├── assets/ # SVG assets
│ ├── projects/ # Project images
│ ├── skills/ # Skill icons
│ └── avatar.png # Profile picture
├── src/
│ ├── app/
│ │ ├── api/
│ │ │ ├── contributions/ # GitHub contributions API
│ │ │ └── spotify/ # Spotify status API
│ │ ├── dashboard/ # Dashboard page
│ │ ├── layout.tsx # Root layout
│ │ ├── page.tsx # Home page
│ │ └── globals.css # Global styles
│ ├── components/
│ │ ├── ui/ # Reusable UI components
│ │ ├── Intro.tsx # Introduction section
│ │ ├── Skills.tsx # Skills showcase
│ │ ├── Projects.tsx # Projects gallery
│ │ ├── GithubGraph.tsx # GitHub contributions graph
│ │ ├── SpotifyCard.tsx # Spotify now playing card
│ │ └── ...
│ └── lib/
│ ├── spotify.ts # Spotify API utilities
│ └── utils.ts # Utility functions
├── next.config.ts
├── tailwind.config.js
└── package.json
To enable Spotify integration:
- Create a Spotify app at Spotify Developer Dashboard
- Get your Client ID and Client Secret
- Generate a refresh token using the Spotify OAuth flow
- Add the credentials to your
.env.localfile
To enable GitHub contributions graph:
- Generate a GitHub Personal Access Token with
read:userscope - Add your GitHub username and token to
.env.local
npm run dev- Start development server with Turbopacknpm run build- Build for productionnpm run start- Start production servernpm run lint- Run ESLint
- Edit
src/components/Intro.tsxto update your bio and social links - Replace
/public/avatar.pngwith your profile picture - Update project images in
/public/projects/
- Edit
src/components/Skills.tsxto add/remove skills - Add skill icons to
/public/skills/
- Edit
src/components/Projects.tsxto add your projects - Add project images to
/public/projects/
The easiest way to deploy is using Vercel:
- Push your code to GitHub
- Import your repository on Vercel
- Add your environment variables in Vercel dashboard
- Deploy!
The site will be live at https://your-project.vercel.app
This project is open source and available under the MIT License.
- Built with Next.js
- Icons from Tabler Icons and React Icons
- Fonts from Geist