A high-performance, full-stack web application that dynamically generates circular avatar grids of GitHub contributors. Built with an integrated microservice architecture, it fetches real-time repository data and composites a clean PNG image on the fly.
- Dynamic Image Generation: Converts standard GitHub API JSON into a perfectly measured, transparent PNG grid.
- Circular Masks: Automatically crops GitHub avatars into perfect circles using SVG masking.
- Unified Architecture: Uses ElysiaJS directly inside Next.js App Router for zero-latency, cross-origin-free API handling.
- Auto-Scaling Grid: Dynamically calculates image dimensions based on the exact number of contributors.
- Instant Markdown: Generates a ready-to-use markdown snippet to drop directly into your GitHub repository
README.md.
- Framework: Next.js 16 (App Router)
- Runtime & Package Manager: Bun
- Backend API: ElysiaJS (Integrated via Next.js Web Standards)
- Image Processing: Sharp (High-performance Node.js C++ image compositing)
- Styling: Tailwind CSS + Shadcn UI
- Language: TypeScript
Make sure you have Bun installed on your machine.
- Clone the repository:
git clone https://github.com/kankangain/contributer-fetcher.git
cd contributer-fetcher- Install dependencies:
bun install- Set up environment variables:
Create a
.envfile in the root directory and add a GitHub Personal Access Token to bypass unauthenticated rate limits.
GITHUB_TOKEN=your_github_pat_here- Start the development server:
bun run dev- Open http://localhost:3000 in your browser.
You don't have to use the frontend UI. You can hit the API directly to generate images for your markdown files:
GET /api/contributors/:owner/:repoThis project is optimized for deployment via Dokploy (using Nixpacks) or standard Docker Swarm.
Because we use sharp for image generation, the build environment requires Node.js standard libraries. The frontend and backend are unified, so you only need to expose a single web port (default 3000).
Required Build Commands for Nixpacks/Dokploy:
- Install:
bun install --no-save - Build:
bun run build - Start:
bun run start
Developed by Kankan Gain