A beautiful, Spotify Wrapped-style visualization of your GitHub year. See your coding journey through an immersive, story-based experience. Discover your commits, pull requests, streaks, languages, and more in a stunning slideshow format.
π SEO Keywords: GitHub Wrapped, GitHub Year in Review, GitHub Stats, Developer Analytics, Coding Year Summary, GitHub Contributions, Developer Wrapped, Code Statistics, GitHub Annual Report
- Story-Based Experience: Navigate through slides that reveal your year in code
- Beautiful Animations: Smooth transitions and engaging visual effects
- Comprehensive Stats: Commits, PRs, issues, streaks, and more
- Language Breakdown: See your coding DNA with language statistics
- Personality Labels: Fun insights like "Night Owl π¦" or "Weekend Warrior βοΈ"
- Shareable Cards: Download or share your wrapped summary
- Private Repo Support: Optionally include private repositories with a PAT
- Beautiful Visualizations: See your coding journey in a stunning slideshow
- Comprehensive Analytics: Commits, PRs, languages, streaks, and more
- Share Your Story: Download or share your wrapped summary
- Privacy First: All processing happens client-side, no data stored
- Open Source: Free and transparent
- Node.js 18+
- npm, yarn, or pnpm
# Clone the repository
git clone https://github.com/RakshitKhajuria/github-year-in-review.git
cd github-year-in-review
# Install dependencies
npm install
# or
yarn install
# or
pnpm install
# Start the development server
npm run dev
# or
yarn dev
# or
pnpm devOpen http://localhost:3000 in your browser.
To include private repository data, you'll need a GitHub Personal Access Token:
- Go to GitHub Settings > Developer Settings > Personal Access Tokens
- Create a new token with the following scopes:
repo- For private repository accessread:user- For user profile data
- Copy the token and use it in the app
Security Note: Your token is never stored. It's only used once to fetch your data and is immediately discarded.
| Metric | Description |
|---|---|
| Total Commits | All commits made in the year |
| Active Days | Days with at least one contribution |
| Longest Streak | Consecutive days of contributions |
| Pull Requests | PRs opened, merged, and reviewed |
| Issues | Issues opened and closed |
| Top Languages | Programming languages used |
| Top Repositories | Most contributed repositories |
| Personality | Fun labels based on your patterns |
Based on your coding patterns, you might earn:
- π¦ Night Owl - Commits predominantly at night
- π¦ Early Bird - Commits before 9 AM
- βοΈ Weekend Warrior - High weekend activity
- π₯ Streak Master - Long contribution streaks
- π Polyglot - Uses 5+ languages
- π€ PR Machine - Opens many pull requests
- π Code Reviewer - Reviews lots of PRs
- π Consistent Coder - Active 150+ days/year
- Framework: Next.js 14 (App Router)
- Language: TypeScript
- Styling: Tailwind CSS
- Animations: Framer Motion
- GitHub API: GraphQL API
- Icons: Lucide React
github-wrapped/
βββ app/
β βββ page.tsx # Landing page
β βββ layout.tsx # Root layout
β βββ globals.css # Global styles
β βββ wrapped/[username]/
β β βββ page.tsx # Wrapped experience
β βββ api/github/
β βββ contributions/
β βββ route.ts # API endpoint
βββ components/
β βββ slides/ # All slide components
β β βββ WelcomeSlide.tsx
β β βββ OverviewSlide.tsx
β β βββ CommitsSlide.tsx
β β βββ MonthSlide.tsx
β β βββ LanguagesSlide.tsx
β β βββ ReposSlide.tsx
β β βββ StreakSlide.tsx
β β βββ PersonalitySlide.tsx
β β βββ SummarySlide.tsx
β βββ ui/ # Reusable UI components
β βββ AnimatedCounter.tsx
β βββ ProgressBar.tsx
βββ lib/
β βββ github/ # GitHub API client
β β βββ client.ts
β β βββ queries.ts
β βββ metrics/ # Data processing
β β βββ calculator.ts
β β βββ personality.ts
β βββ types.ts # TypeScript types
β βββ utils.ts # Utility functions
βββ ...config files
- No Data Storage: We don't store any user data or tokens
- Ephemeral Tokens: PATs are used once and immediately discarded
- HTTPS Only: All API calls are encrypted
- Client-Side Processing: Stats are computed in your browser
- Open Source: Full transparency in how your data is used
Click the button above to deploy instantly to Vercel. No configuration needed!
No environment variables are required for basic functionality. The app uses GitHub's public API for public repositories.
Fetches and calculates wrapped data for a user.
Request Body:
{
"username": "octocat",
"year": 2024,
"token": "ghp_xxxx" // Optional, for private repos
}Response:
{
"user": { "username": "octocat", "avatarUrl": "...", ... },
"year": 2024,
"stats": { "totalCommits": 1523, ... },
"highlights": { "mostProductiveMonth": { ... }, ... },
"repositories": { "top": [...], ... },
"languages": { "top": [...], ... },
"personality": { "primary": { ... }, "badges": [...] }
}Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Inspired by Spotify Wrapped
- Built with Next.js
- Styled with Tailwind CSS
- Animated with Framer Motion
Made with π for the developer community