A backend API and React dashboard for generating neon-themed GitHub profile stats cards. Cards are rendered directly as SVG vector images and cached using Supabase to stay within GitHub API rate limits.
Customize and preview your cards live on the dashboard: https://github-readme-stats-v2.web.app
| Card ID | Name | Type | Description |
|---|---|---|---|
| 1 | Identity | Static / Exportable | Profile card with bio, custom avatar upload, and customizable info rows. |
| 2 | Stats | Dynamic API | Displays total Repositories, Stars, Forks, Followers, and Following. |
| 3 | Quest Log | Dynamic API | Displays Commits, PRs, Closed Issues, Code Reviews, and Streaks. |
| 4 | Tech Stack | Dynamic API | Displays top 5 languages used across public repositories. |
| 5 | Footer | Dynamic API | Typewriter quote bar with customizable animated hearts. |
Add dynamic cards directly to your GitHub profile README.md by pasting the HTML or Markdown snippets below. Replace YOUR_GITHUB_USERNAME with your GitHub username:
<p align="center">
<img src="https://github-readmestats-71957385499.asia-south1.run.app/api/card/2?username=YOUR_GITHUB_USERNAME" alt="Stats Card" width="760" />
<br/>
<img src="https://github-readmestats-71957385499.asia-south1.run.app/api/card/3?username=YOUR_GITHUB_USERNAME" alt="Quest Log Card" width="760" />
<br/>
<img src="https://github-readmestats-71957385499.asia-south1.run.app/api/card/4?username=YOUR_GITHUB_USERNAME" alt="Tech Stack Card" width="760" />
</p><img src="https://github-readmestats-71957385499.asia-south1.run.app/api/card/2?username=YOUR_GITHUB_USERNAME" alt="Stats Card" width="760" />- Request: GitHub's image proxy (Camo) or a browser requests
/api/card/:cardId?username=yourname. - Cache Check: The backend checks Supabase PostgreSQL for cached stats (4-hour default TTL).
- API Fetch: On a cache miss, stats are fetched from GitHub's GraphQL API, stored in Supabase, and rendered into SVG card templates.
- Rate Limit Fallback: If GitHub's API rate limit is reached, the backend serves the last cached snapshot from the database (or a cooldown SVG card for new users).
- Backend: Node.js, Express, Axios, Supabase (PostgreSQL)
- Frontend: React 19, Vite, Tailwind CSS 4, DaisyUI 5, Lucide Icons
- Deployment: GCP Cloud Run (Backend API), Firebase Hosting (Frontend SPA)
- Node.js (v18+)
- GitHub Personal Access Token (PAT) with
read:userpermissions - Supabase Project (URL and Service Role Key)
cd backend
npm install
cp .env.example .envConfigure your environment variables in backend/.env:
PORT=3001
GITHUB_PAT=your_github_personal_access_token
SUPABASE_URL=https://your-project-id.supabase.co
SUPABASE_KEY=your_supabase_service_role_key
CACHE_TTL_HOURS=4Start the backend development server:
npm run devThe server will run on http://localhost:3001.
cd ../frontend
npm install
cp .env.example .envConfigure your environment variables in frontend/.env:
VITE_API_URL=http://localhost:3001Start the Vite development server:
npm run devOpen http://localhost:5173 in your browser to view the Live Customizer Dashboard.
We welcome community contributions! Please read our CONTRIBUTING.md for branch naming rules, PR title formats, and submission guidelines.
This project is licensed under the MIT License.