A modern, responsive portfolio website built with Next.js, showcasing my projects, experience, education, and technical skills. The site dynamically fetches and displays GitHub repositories, automatically organizing them by completion status.
- Dynamic Project Display: Automatically fetches and displays public GitHub repositories
- Project Organization: Categorizes projects into "Completed" and "Ongoing" based on README status indicators
- Responsive Design: Fully responsive with mobile-friendly navigation and dropdown menu
- Tech Stack Showcase: Interactive tech stack page with experience levels
- Experience Timeline: Visual timeline of work experience and internships
- Education Section: Academic background and achievements
- Smooth Animations: Framer Motion animations for enhanced user experience
- GitHub Integration: Real-time repository data with languages, README excerpts, and statistics
- Framework: Next.js 16.0.4
- Language: TypeScript
- Styling: Tailwind CSS
- Animations: Framer Motion
- UI Components: Custom components with shadcn/ui patterns
- API: GitHub REST API
- Node.js 18+
- npm, yarn, pnpm, or bun
- GitHub Personal Access Token (optional, for higher API rate limits)
- Clone the repository:
git clone https://github.com/rohanb593/portfolio_web.git
cd portfolio_web- Install dependencies:
npm install- Create a
.env.localfile in the root directory (optional):
GITHUB_TOKEN=your_github_token_here- Run the development server:
npm run dev- Open http://localhost:3000 in your browser.
portfolio_web/
├── app/
│ ├── api/
│ │ └── github/
│ │ └── repos/ # GitHub API integration
│ ├── education/ # Education page
│ ├── experience/ # Experience page
│ ├── projects/ # Projects page with GitHub integration
│ ├── tech/ # Tech stack page
│ └── page.tsx # Home page
├── components/
│ ├── header.tsx # Navigation header with mobile menu
│ └── ui/ # Reusable UI components
└── public/ # Static assets
The portfolio automatically fetches your public GitHub repositories. To use a GitHub token for higher rate limits:
- Create a GitHub Personal Access Token at GitHub Settings
- Add it to
.env.localasGITHUB_TOKEN - The token only needs public repository read access
Projects are automatically organized based on status indicators in their README files:
- Completed Projects: Repositories with
**Status:** ✅ Completedin the README - Ongoing Projects: All other repositories
- Push your code to GitHub
- Import your repository on Vercel
- Add
GITHUB_TOKENas an environment variable in Vercel settings - Deploy!
The site can be deployed to any platform that supports Next.js:
- Netlify
- Cloudflare Pages
- AWS Amplify
- Any Node.js hosting service
Important: Remember to add GITHUB_TOKEN as an environment variable in your hosting platform's settings.
- Fetches all public repositories from your GitHub account
- Extracts languages, README content, and repository statistics
- Organizes projects by completion status
- Displays first 30 lines of README files
- Shows creation and last updated dates
- Desktop: Full navigation bar with scroll-based floating header
- Mobile: Hamburger menu with smooth slide-in dropdown
- Smooth animations and transitions throughout
- Interactive progress bars showing years of experience
- Categorization by Languages, Frameworks, and Software Tools
- Clickable tech badges that link from project pages
- Personal Info: Edit
app/page.tsxfor home page content - Experience: Update
app/experience/page.tsx - Education: Update
app/education/page.tsx - Tech Stack: Modify the
techStackobject inapp/tech/page.tsx
- Global styles:
app/globals.css - Color scheme: CSS variables in
globals.css - Component styles: Tailwind CSS classes
Status: ✅ Completed
This project is open source and available for personal use.
- Email: rohan.bhagat1@outlook.com
- LinkedIn: rohan-bhagat-a64785341
- GitHub: rohanb593