Personal portfolio showcasing projects, live coding stats, and what I'm currently listening to
Welcome to my corner of the internet! This is my personal portfolio website where I share:
- π― My Projects - Cool things I've built, from deployment monitoring tools to VS Code extensions
- π Coding Activity - Real-time stats showing my GitHub contributions, coding streaks, and favorite programming languages
- π΅ Music I'm Listening To - What's playing on my Spotify right now (because good code needs good music!)
- πΌ Professional Presence - Easy access to my GitHub, LinkedIn, and other professional profiles
The site updates automatically to show live data, so you can always see what I'm working on and what technologies I'm using. Whether you're here to check out my work, looking for collaboration opportunities, or just curious about what I do - feel free to explore!
- Project Showcase - Featured projects with custom cards (Orbit, VS Music, Quazaar)
- GitHub Integration - Real-time stats, contribution graphs, streak tracking, and language breakdown
- Spotify Widget - Live "now playing" display with album artwork and playback status
- Markdown Rendering - Server-side README conversion with syntax highlighting
- Responsive Design - Mobile-first, fully responsive layout with smooth animations
- Server Components - Optimized data fetching with Next.js App Router
- API Routes - Custom endpoints for Spotify, GitHub, and README proxying
- Type Safety - Full TypeScript coverage with strict mode
- Performance - Image optimization, font loading, and strategic caching
- Modern UI - Framer Motion animations, Lucide icons, and dark theme
| Category | Technologies |
|---|---|
| Framework | Next.js 16 (App Router), React 19 |
| Language | TypeScript 5 |
| Styling | TailwindCSS 4, Tailwind Typography |
| UI Components | Radix UI, Framer Motion, Lucide Icons |
| Markdown | Marked, React Markdown, Rehype, Remark GFM |
| Code Highlighting | Highlight.js, Rehype Highlight |
| Testing | Vitest |
| Linting | ESLint 9 |
- Node.js 20+ or Bun
- pnpm (recommended), npm, or bun
-
Clone the repository
git clone https://github.com/codershubinc/codershubinc.tech.git cd codershubinc.tech -
Install dependencies
pnpm install # or: npm install # or: bun install
-
Set up environment variables (optional)
cp .env.example .env.local
Add your tokens:
GITHUB_TOKEN=ghp_your_github_token_here SPOTIFY_CLIENT_ID=your_spotify_client_id SPOTIFY_CLIENT_SECRET=your_spotify_client_secret SPOTIFY_REFRESH_TOKEN=your_spotify_refresh_token
-
Run development server
pnpm dev
-
Open browser Navigate to http://localhost:3000
pnpm build
pnpm startpnpm testcodershubinc.com/
βββ src/
β βββ app/ # Next.js App Router pages
β β βββ page.tsx # Home page with all widgets
β β βββ layout.tsx # Root layout
β β βββ api/ # API routes
β β βββ spotify/ # Spotify integration endpoint
β βββ components/ # React components
β β βββ GitHubContributions.tsx
β β βββ GitHubStatsCard.tsx
β β βββ GitHubStreakMini.tsx
β β βββ SpotifyWidget.tsx
β β βββ TopLanguagesCard.tsx
β β βββ projects/ # Project-specific cards
β β βββ OrbitCard.tsx
β β βββ QuazaarCard.tsx
β β βββ VSMusicCard.tsx
β βββ constants/ # API endpoints & constants
β βββ data/ # Static data (projects, skills)
β βββ lib/ # Utilities & helpers
β βββ types/ # TypeScript type definitions
βββ public/ # Static assets
βββ docs/ # Documentation
βββ [config files]
GET /api/spotify
Returns current playback status, track info, and album artwork.
Response Example:
{
"artist": "Artist Name",
"track": "Song Title",
"album": "Album Name",
"is_playing": true,
"album_images": [{ "url": "...", "height": 640, "width": 640 }],
"track_uri": "spotify:track:..."
}| Variable | Description | Required |
|---|---|---|
GITHUB_TOKEN |
GitHub Personal Access Token for increased API rate limits | Optional |
SPOTIFY_CLIENT_ID |
Spotify App Client ID | Required for Spotify widget |
SPOTIFY_CLIENT_SECRET |
Spotify App Client Secret | Required for Spotify widget |
SPOTIFY_REFRESH_TOKEN |
Spotify User Refresh Token | Required for Spotify widget |
- Go to Spotify Developer Dashboard
- Create a new app
- Add
http://localhost:3000/api/spotify/callbackto redirect URIs - Get your Client ID and Secret
- Follow this guide to get your refresh token
- GitHubContributions - Contribution graph with hover details
- GitHubStatsCard - Total stars, commits, and rank
- GitHubStreakMini - Current & longest streak display
- TopLanguagesCard - Top 3 languages with percentages
- SpotifyWidget - Full now-playing card with album art
- CurrentlyListeningMini - Compact version for sidebar
- OrbitCard - Self-hosted deployment monitoring
- VSMusicCard - VS Code music extension
- QuazaarCard - Cross-platform media control
- Click the button above
- Configure environment variables
- Deploy!
pnpm buildThe output will be in the .next folder. Configure your hosting provider to serve this directory.
Contributions are welcome! Please follow these steps:
- Fork the repository
- Create a feature branch:
git checkout -b feat/amazing-feature - Commit your changes:
git commit -m 'Add amazing feature' - Push to the branch:
git push origin feat/amazing-feature - Open a Pull Request
Please ensure:
- Code follows existing style conventions
- All tests pass (
pnpm test) - ESLint shows no errors (
pnpm lint)
This project is licensed under the MIT License - see the LICENSE file for details.
Swapnil Ingle (@codershubinc)
- Website: codershubinc.com
- GitHub: @codershubinc
- Next.js - The React Framework
- Vercel - Hosting & Deployment
- TailwindCSS - Utility-first CSS
- Spotify Web API - Music integration
- GitHub API - Stats & data
If you find this project useful, please consider giving it a β!
Made with β€οΈ and β by Swapnil Ingle