🎬 GitStory 2025

December 24, 2025 Β· View on GitHub

🎬 GitStory 2025

Your Year in Code β€” Cinematic Wrapped

Next.js React TypeScript Tailwind Framer Motion NextAuth

Transform your GitHub & GitLab contributions into a stunning, Instagram Stories-style cinematic experience.

🌐 Live Demo β€’ ✨ Features β€’ ⚑ Quick Start β€’ πŸ› οΈ Tech Stack


✨ Features

FeatureDescription
πŸŽ₯ Cinematic Experience11 beautifully animated slides with Instagram Stories-like navigation
πŸ“Š Live GitHub & GitLab DataReal-time stats fetched from GitHub/GitLab API β€” commits, PRs, issues, reviews
πŸ” OAuth AuthenticationOne-click login with GitHub or GitLab
πŸŒ“ Dark/Light ThemeToggle between themes on main page and slides
🧬 Smart ArchetypesAI-determined coding personas: Night Owl, Weekend Warrior, Grid Painter, and more
πŸ“ˆ Velocity ChartsAnimated contribution charts powered by Recharts
πŸ—“οΈ Contribution GridVisual heatmap of your 2025 coding activity
πŸ† Top 5 RepositoriesShowcase your best projects with smart ranking
🎨 Language BreakdownBeautiful visualization of your tech stack (55+ languages!)
πŸ“± Mobile-FirstTouch gestures: tap left/right to navigate, hold to pause
πŸ–ΌοΈ Poster ExportDownload a shareable movie-poster style summary
πŸ”— Social SharingShare to Twitter, LinkedIn, Reddit, WhatsApp with one click
🎊 Confetti CelebrationEnd your story with style
πŸ” SEO OptimizedBuilt with Next.js for better search engine visibility

πŸ†• What's New (v4.0)

πŸ” OAuth Authentication

  • GitHub OAuth β€” One-click login, no token copying needed
  • GitLab OAuth β€” Full GitLab support with OAuth authentication
  • Private repos & org repos automatically included when authenticated

πŸŒ“ Theme Toggle

  • Dark/Light Mode β€” Toggle on main page and within slide presentation
  • Play/Pause Controls β€” On-screen buttons during story playback
  • Theme-aware slides β€” All 11 slides adapt to your preferred theme

πŸ”— Social Sharing

  • Share Button β€” On the final poster slide
  • Multiple platforms β€” Twitter, LinkedIn, Reddit, WhatsApp
  • Copy Link β€” With toast notification
  • Pre-written share text β€” Automatically includes your stats

🦊 GitLab Support

  • Full GitLab API integration β€” Same cinematic experience for GitLab users
  • OAuth authentication β€” Login with GitLab account
  • Project stats β€” Commits, merge requests, issues from GitLab

πŸš€ Previous Updates

Next.js Migration (v3.0)

  • Migrated from Vite to Next.js 16 for better SEO and performance
  • Server-side metadata for improved social sharing (Twitter, Facebook, LinkedIn)
  • Optimized fonts with next/font/google for better performance
  • Dynamic sitemap generation for search engines

Optimized API (v2.0)

  • With Token: Only 4 API calls (GraphQL bundles contributions + PR/Issue/Review counts!)
  • Without Token: 7 API calls (REST fallback)
  • 43% fewer API calls when authenticated!

Smart Repository Scoring

Projects are now ranked using 12 factors instead of just stars:

  • ⭐ Stars & Forks (logarithmic scale)
  • πŸ“… Recent activity in 2025 (time-decay bonus)
  • ✨ Original work (not forks)
  • πŸ“ Description & Topics
  • πŸ’» Primary language
  • πŸ“¦ Repository size
  • πŸ› Open issues (activity indicator)
  • πŸ†• Created in 2025 bonus
  • πŸ‘€ Watchers
  • πŸ“¦ Archived penalty

🎬 Slides

Experience your year through 11 cinematic slides:

#SlideWhat It Shows
1TitleYour username & avatar with dramatic reveal
2VelocityAnimated area chart of daily commits
3GridFull-year contribution heatmap
4CompositionBreakdown: Commits vs PRs vs Issues vs Reviews
5RoutineYour busiest day of the week
6ProductivityPeak coding hours & time-of-day persona
7CommunityFollowers, stars, and repo count
8LanguagesTop 3 programming languages
9Top 5 ReposYour best repositories ranked by score
10Top RepoSpotlight on your #1 repository
11Poster🎬 Downloadable movie poster + Share buttons

🧬 Archetypes

Based on your behavior patterns, you'll be assigned one of these personas:

ArchetypeCriteria
πŸ”€ The Pull Request ProOpens many PRs (>20% of activity)
πŸ‘€ The ReviewerFrequent code reviewer (>10% of activity)
πŸŒ™ The Night OwlPeak activity after 10 PM
πŸŒ… The Early BirdPeak activity before noon
πŸ—“οΈ The Weekend Warrior>35% commits on weekends
🎨 The Grid Painter1200+ commits (green squares everywhere!)
⚑ The Consistent400+ commits, steady contributor
πŸ“‹ The PlannerHigh issue-to-commit ratio
⭐ The Community Star500+ followers or 1000+ total stars
πŸ”§ The TinkererDefault β€” you're exploring!

⚑ Quick Start

# Clone the repository
git clone https://github.com/PankajKumardev/gitstory-2025.git
cd gitstory-2025

# Install dependencies
npm install

# Set up environment variables
cp .env.example .env.local
# Edit .env.local with your OAuth credentials

# Start development server
npm run dev

Open http://localhost:3000 and enter any GitHub username!

πŸ’‘ Tip: Type demo to see a full experience with mock data.


πŸ” Authentication

Click GitHub or GitLab button on the home page for one-click authentication.

Environment Variables

# NextAuth Configuration
NEXTAUTH_URL=https://gitstory.pankajk.tech
NEXTAUTH_SECRET=your-secret-key

# GitHub OAuth (https://github.com/settings/developers)
GITHUB_CLIENT_ID=your-github-client-id
GITHUB_CLIENT_SECRET=your-github-client-secret

# GitLab OAuth (https://gitlab.com/-/user_settings/applications)
GITLAB_CLIENT_ID=your-gitlab-client-id
GITLAB_CLIENT_SECRET=your-gitlab-client-secret

OAuth Callback URLs

ProviderCallback URL
GitHubhttps://yourdomain.com/api/auth/callback/github
GitLabhttps://yourdomain.com/api/auth/callback/gitlab

GitLab Scopes Required

  • read_user β€” Profile info
  • read_api β€” API access
  • read_repository β€” Repository access

Benefits with OAuth

FeatureWithout OAuthWith OAuth
Rate Limit60/hour5000/hour
Private ReposβŒβœ…
Org ReposβŒβœ…
Private ContributionsβŒβœ…

πŸ› οΈ Tech Stack

TechnologyPurpose
Next.js 16React framework with App Router for SEO & performance
React 19UI Components with latest features
NextAuth.jsOAuth authentication for GitHub & GitLab
TypeScriptType-safe development
Tailwind CSS 4Utility-first styling with @theme config
Framer MotionButtery-smooth animations
RechartsBeautiful, responsive charts
Lucide ReactConsistent icon system
html-to-imagePoster PNG export
canvas-confettiCelebration effects 🎊
Vercel AnalyticsPrivacy-friendly analytics

πŸ“± Controls

On-Screen Controls

ButtonEffect
⏸️ PausePause slide timer
β˜€οΈ/πŸŒ™ ThemeToggle dark/light mode
βœ• CloseExit story
πŸ“€ ShareShare to social (poster slide)

Touch Gestures (Mobile)

ActionEffect
Tap right 2/3Next slide
Tap left 1/3Previous slide
Hold anywherePause timer
ReleaseResume timer

Keyboard Controls (Desktop)

KeyEffect
β†’ or DNext slide
← or APrevious slide
SpacePause/Resume
EscapeExit story

πŸ—οΈ Project Structure

gitstory-2025/
β”œβ”€β”€ app/
β”‚   β”œβ”€β”€ api/auth/[...nextauth]/  # NextAuth API route
β”‚   β”œβ”€β”€ layout.tsx               # Root layout with providers
β”‚   β”œβ”€β”€ page.tsx                 # Main page with OAuth
β”‚   β”œβ”€β”€ globals.css              # Tailwind + custom styles
β”‚   └── sitemap.ts               # Dynamic sitemap
β”œβ”€β”€ components/
β”‚   β”œβ”€β”€ providers/
β”‚   β”‚   └── SessionProvider.tsx  # NextAuth session wrapper
β”‚   β”œβ”€β”€ StoryContainer.tsx       # Slide navigation & controls
β”‚   β”œβ”€β”€ SlideLayout.tsx          # Theme-aware slide wrapper
β”‚   └── slides/                  # 11 slide components
β”œβ”€β”€ context/
β”‚   └── ThemeContext.tsx         # Dark/light theme context
β”œβ”€β”€ lib/
β”‚   └── auth.ts                  # NextAuth configuration
β”œβ”€β”€ services/
β”‚   β”œβ”€β”€ githubService.ts         # GitHub API integration
β”‚   β”œβ”€β”€ gitlabService.ts         # GitLab API integration
β”‚   └── scoringAlgorithms.ts     # Scoring logic
β”œβ”€β”€ types.ts                     # TypeScript interfaces
└── constants.ts                 # Mock data & configuration

πŸš€ Build & Deploy

# Production build
npm run build

# Start production server
npm start

Deploy to any platform that supports Next.js:

  • Vercel (recommended - zero config)
  • Netlify
  • Railway
  • Cloudflare Pages

Vercel Environment Variables

Add these in your Vercel project settings:

  • NEXTAUTH_URL
  • NEXTAUTH_SECRET
  • GITHUB_CLIENT_ID
  • GITHUB_CLIENT_SECRET
  • GITLAB_CLIENT_ID
  • GITLAB_CLIENT_SECRET

πŸ“„ License

MIT License with Attribution β€” see LICENSE for full text.

⚠️ Attribution Required

If you use, modify, or build upon this project, you MUST:

  1. βœ… Credit the original author β€” Include "Based on GitStory by Pankaj Kumar" in your README
  2. βœ… Link to the original repo β€” https://github.com/PankajKumardev/gitstory-2025
  3. ❌ Do NOT claim original authorship β€” This includes Product Hunt, social media, or any other platform
  4. ❌ Do NOT remove copyright notices β€” Keep the license file and copyright comments

Why This Matters

This project took significant effort to create. If you found it useful, please:

  • ⭐ Star this repo
  • πŸ”— Credit the original when sharing
  • 🐦 Tag @pankajkumar_dev when posting about it

Copyright Β© 2024-2025 Pankaj Kumar


Made with πŸ’œ for developers who ship

Star ⭐ this repo if you found it useful!

🌐 Try GitStory 2025 | 🐦 Twitter