Your GitHub year in review, directly in your terminal.
A CLI tool that analyzes your GitHub activity for 2025 and generates beautiful statistics and shareable images. Like Spotify Wrapped, but for developers.
npx github-wrapped-2025- Enter your GitHub username
- If prompted, paste your GitHub token (get one at https://github.com/settings/tokens)
- View your year in review!
That's it! No setup, no config files needed.
- Comprehensive Stats: Commits, PRs, issues, contribution streaks
- Language Analysis: Top programming languages with usage percentages
- Peak Hours Detection: Discover when you're most productive
- Developer Archetypes: Get classified based on your coding patterns
- Achievement System: Unlock achievements based on your activity
- Image Export: Generate high-quality 1200x675px images for social media
- Privacy First: All processing happens locally, no data collection
npx github-wrapped-2025No installation needed! Just run it once and the app handles everything.
npm install -g github-wrapped-2025
github-wrappedgit clone https://github.com/d3varaja/gh-wrapped-cli.git
cd gh-wrapped-cli
npm install
npm run build
npm start- Fetches your public GitHub data via GitHub API
- Analyzes commits, repositories, languages, and contribution patterns
- Calculates streaks, peak hours, and determines your developer archetype
- Displays results in a beautiful terminal interface
- Optionally exports to a shareable image
| Package | Purpose |
|---|---|
| TypeScript | Type-safe development |
| Ink | React-based terminal UI |
| Octokit | GitHub API client |
| Puppeteer | Image generation |
| Chalk | Terminal styling |
- Node.js >= 18
- npm or yarn
npm installnpm run devnpm run buildsrc/
├── index.tsx # Main CLI entry point
├── github.ts # GitHub API client
├── analytics.ts # Stats calculation
├── ui.tsx # Terminal UI components
├── export.ts # Image export functionality
└── types.ts # TypeScript definitions
You can also use this as a library:
import { GitHubClient } from 'github-wrapped-2025';
const client = new GitHubClient('username');
const repos = await client.getRepositories();
const commits = await client.getCommitsForYear(2025);GitHub API has rate limits:
- Without token: 60 requests/hour (you'll likely hit this)
- With token: 5,000 requests/hour
The app handles this for you! When you hit the rate limit:
⚠ GitHub API Rate Limit Exceeded
Get a token at: https://github.com/settings/tokens
Paste your GitHub token (or press Ctrl+C to exit): _
That's it! Just paste your token and the app continues.
- ✓ Valid token? → App continues with your data
- ✗ Invalid token? → Shows error, lets you try again
- Ctrl+C → Exit anytime
- Visit: https://github.com/settings/tokens
- Click "Generate new token (classic)"
- No scopes needed - just click "Generate token" at the bottom
- Copy the token
- Paste it when the app asks
If you're developing or running this locally, you can set a token beforehand:
# Environment variable (one-time)
GITHUB_TOKEN=your_token npx github-wrapped-2025
# Or create .env file in project directory
echo "GITHUB_TOKEN=your_token" > .envFor most users: just let the app prompt you!
Contributions welcome. Please:
- Fork the repository
- Create a feature branch
- Submit a pull request
MIT License - see LICENSE file for details
d3varaja
- GitHub: @d3varaja
Built for the developer community. Inspired by Spotify Wrapped.