Your GitHub Year in Review - Wrapped with Style
Experience your GitHub activity like never before - beautiful animations, AI-powered insights, and shareable year-in-review
π Try Demo β’ π Docs β’ π Report Bug
Every year, Spotify Wrapped makes us excited to share our music journey. But what about our code journey? DevWrapped brings that same excitement to developers by transforming your GitHub activity into a stunning, animated year-in-review experience.
- π Completely Free - No paywalls, no premium tiers
- π No Login Required - Just enter a GitHub username
- π¨ Beautiful Design - 14 animated slides with 5 unique themes
- π€ AI-Powered - Groq generates personalized developer personalities
- π Accurate Data - Uses GitHub GraphQL API for precise statistics
- π Dark Mode First - Designed for developers who code at night
- π± Share Ready - Perfect for social media, portfolios, and README badges
- π₯ Total Commits - Accurate count from GitHub GraphQL API (Jan 1 - Dec 31)
- π¦ Top Repository - Your most committed project with language & stars
- π Stars Earned - Total stars across all your repositories
- π΄ Forks Created - Track how others are using your code
- π Issues & PRs - Contributions to open source discussions
- π¬ Code Reviews - Your impact on team collaboration
Groq AI analyzes your coding patterns to generate:
- π·οΈ Developer Archetype - "Code Wizard", "Bug Hunter", "Open Source Champion"
- π Personality Summary - Unique description of your coding style
- π― Coding Philosophy - What drives your development approach
- π Cosmic - Purple gradients with star particles
- π Ocean - Blue waves with bubble effects
- π₯ Sunset - Warm oranges and reds
- π² Forest - Earthy greens with floating leaves
- π Midnight - Deep blues with glowing dots
- Welcome & Username
- Total Commits Counter
- Top Repository Showcase
- Stars & Forks
- Issues & PRs
- Code Reviews
- Contribution Graph
- Most Active Day
- Coding Streak
- Languages Breakdown
- Activity Timeline
- AI Personality Reveal
- Year Highlights
- Share & Download
- βοΈ Snowflakes, bubbles, leaves, embers - theme-matched particles
- π Confetti celebrations on milestone slides
- β¨ Smooth Framer Motion transitions between slides
| Technology | Purpose | Why We Chose It |
|---|---|---|
| Next.js 15 | React Framework | App router, server components, API routes |
| TypeScript | Type Safety | Catch bugs early, better DX |
| Supabase | Database & Auth | 24-hour caching, RLS policies |
| GitHub GraphQL | Data Source | Accurate full-year commit data |
| Groq AI | Personality Gen | Fast LLM inference (Llama 3.1) |
| Framer Motion | Animations | Smooth slide transitions |
| Tailwind CSS | Styling | Utility-first, responsive design |
| Zustand | State Management | Lightweight, simple API |
| React Confetti | Celebrations | Fun visual effects |
- Node.js 18+
- GitHub Personal Access Token (create one)
- Supabase Account (free tier)
- Groq API Key (get one)
# Clone the repository
git clone https://github.com/akshadjaiswal/dev-wrapped.git
cd dev-wrapped/app
# Install dependencies
npm install
# Copy environment template
cp .env.example .env.local# GitHub API (create token: https://github.com/settings/tokens)
# Required scopes: repo, read:user
GITHUB_TOKEN=ghp_xxxxxxxxxxxxx
# Supabase (from https://app.supabase.com/project/_/settings/api)
NEXT_PUBLIC_SUPABASE_URL=https://xxxxx.supabase.co
NEXT_PUBLIC_SUPABASE_ANON_KEY=eyJxxx... # Public - safe to expose
SUPABASE_SERVICE_ROLE_KEY=eyJxxx... # SECRET - server only!
# Groq AI (from https://console.groq.com/keys)
GROQ_API_KEY=gsk_xxxxxxxxxxxxx# Run migrations in Supabase SQL Editor
# See: my_docs/SETUP.md for full schema
CREATE TABLE github_wraps (
id UUID DEFAULT gen_random_uuid() PRIMARY KEY,
username TEXT NOT NULL,
year INTEGER NOT NULL,
wrap_data JSONB NOT NULL,
created_at TIMESTAMPTZ DEFAULT NOW(),
UNIQUE(username, year)
);
-- Enable RLS
ALTER TABLE github_wraps ENABLE ROW LEVEL SECURITY;
-- Public read policy
CREATE POLICY "Allow public read" ON github_wraps FOR SELECT USING (true);npm run dev
# Open http://localhost:3000npm run build
npm startapp/
βββ app/ # Next.js App Router
β βββ api/ # API Routes
β β βββ analyze/[username]/ # GitHub data fetching
β βββ generate/[username]/ # Wrap generation page
β βββ layout.tsx # Root layout
βββ components/
β βββ ui/ # Reusable UI (Button, Input)
β βββ wrap/ # Wrap-specific components
β β βββ SlideContainer.tsx # Navigation logic
β β βββ slides/ # 14 individual slides
β β βββ ThemeProvider.tsx # Theme system
β β βββ particles/ # Animation components
β βββ WrapDisplay.tsx # Main wrap orchestrator
βββ lib/
β βββ services/
β β βββ github.ts # REST API integration
β β βββ github-graphql.ts # GraphQL queries
β β βββ groq.ts # AI personality generation
β βββ utils/
β β βββ calculations.ts # Stats processing
β β βββ supabase.ts # Database client
β βββ types/ # TypeScript definitions
βββ my_docs/ # Comprehensive documentation
β βββ claude.md # AI assistant quick start
β βββ ARCHITECTURE.md # System design
β βββ DATA-FLOW.md # Pipeline documentation
β βββ ... # 6 more reference docs
βββ public/ # Static assets
See: lib/types/theme.ts and components/wrap/ThemeProvider.tsx
// 1. Define theme in lib/types/theme.ts
export const THEMES = {
custom: {
name: 'Custom',
gradient: 'from-pink-500 to-purple-500',
particleColor: '#ff69b4'
}
}
// 2. Add particle component in components/wrap/particles/
// 3. Update ThemeProvider.tsx to include new particlesSee: components/wrap/slides/ and my_docs/COMPONENTS.md
# 1. Create new slide component
components/wrap/slides/NewSlide.tsx
# 2. Add to WrapDisplay.tsx
<SlideContainer totalSlides={15}> # Increment count
{/* ... existing slides */}
<NewSlide data={wrapData} />
</SlideContainer>
# 3. Update navigation in lib/store/navigation.tsSee: lib/services/groq.ts line 30-80
- Comparison Mode - Compare two users side-by-side
- Team Wraps - Generate wraps for entire organizations
- Historical Data - View wraps from previous years
- Custom Date Ranges - Generate wraps for any time period
- More Themes - Retro, Neon, Minimalist, Glassmorphism
- Export Options - PDF, Video, High-res images
- Embeddable Widgets - Add DevWrapped badge to your README
- Multi-platform - GitLab, Bitbucket support
Contributions are welcome! Please check out our issues or submit a PR.
# 1. Create a feature branch
git checkout -b feature/amazing-feature
# 2. Make your changes
# See my_docs/ARCHITECTURE.md for code structure
# 3. Test locally
npm run dev
npm run build # Ensure production build works
# 4. Submit PR
# Include screenshots for UI changesThis project is licensed under the MIT License - see LICENSE file for details.
Akshad Jaiswal
- π GitHub: @akshadjaiswal
- π¦ Twitter: @akshad_999
- πΌ LinkedIn: Akshad Jaiswal
- GitHub GraphQL API - Accurate contribution data
- Groq - Lightning-fast AI inference
- Supabase - Excellent developer experience
- Framer Motion - Smooth animations
- Next.js - Amazing React framework
Made with β€οΈ by developers, for developers
β Star this repo if DevWrapped made you smile!