Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 

Repository files navigation

DevWrapped

Your Year in Code.

Deployed on Cloudflare API on Cloudflare Workers Built with React TypeScript

Turn a GitHub profile into a cinematic, interactive story.
Not another dashboard. A Wrapped.

Try it live →


What is DevWrapped?

Spotify Wrapped went viral because it wasn't analytics — it was storytelling.

GitHub has millions of developers, yet every recap tool today is just a dashboard wearing colorful clothes.

DevWrapped changes that. Enter a username. Get a 10-slide cinematic story that tells the story behind your year as a developer — what you built, when you coded, how you think, and what your commit history secretly says about you.


The Story — 10 slides, one narrative

#SlideWhat it shows
OpeningAnimated reveal with your avatar, gesture instructions, and "Your2026 in Code"
Year in NumbersCommits, repos, PRs, issues, stars, followers — count-up animation
Tech DNAYour language breakdown as an animated genome visualization
Commit Psychology"You typed 'fix' 48 times." — what your messages really say
Project GraveyardCreated 22 repos, maintained 4. The rest are enjoying retirement.
Peak MomentYour hardest coding day — 47 commits, 3 repos, 9 hours
The Night OwlLatest commit at2:00 AM — "please work"
Hall of FameMost starred, most active, longest-running, fastest-growing
Developer ArchetypeThe Explorer, The Finisher, The Night Owl — personality from data
Share Studio6 themed stat cards + all-in-one poster, 8 theme packs, download/share

Theme Packs — your Wrapped, your style

Each theme is a complete visual identity — different backgrounds, decorations, typography, and per-card treatments (the streak card looks different from the language card, even in the same theme).

🌌 Neon Observatory

Aurora gradients, stars, constellation dots, nebula depth
Best for: Default / signature look

⚫ Midnight Minimal

Black, white, subtle accents, line-graph streak
Best for: LinkedIn, professional

💻 Cyber Terminal

ASCII bars, terminal grids, CRT scanlines
Best for: Developers, open-source

📐 Blueprint

Engineering grids, dimension lines, spec sheets
Best for: Engineers, architects

🌋 Magma Core

Molten lava gradients, floating embers, forged metal
Best for: Power & intensity

🌊 Abyss

Deep ocean, bubble trails, jellyfish glow
Best for: Calm & immersive

🌸 Sakura

Cherry blossom petals, ink brush, matte paper
Best for: Elegant & artistic

⚜️ Noir Gold

Matte black + satin gold, luxury minimal
Best for: Premium, LinkedIn

Interactions

  • Auto-advance — story progresses automatically with per-slide timing (3–6s), pauses on hold
  • Hold → pause — press and hold anywhere to pause the story; release to resume
  • Hold → hide UI — hold for500ms to hide everything (screenshot-ready artwork)
  • 3D Tilt — cards tilt toward your cursor with holo shine, glow, and a </> watermark
  • Mobile Gyro — tilt your phone and cards respond (permission granted on first tap)
  • Touch Swipe — swipe left/right to navigate between slides
  • Tap zones — tap right half = next, left half = previous
  • ⋮ Menu — per-card Download PNG, Copy Image, Share, Replay
  • Theme Switching — instant live preview, no reload
  • Archetype Recommendation — auto-selects the best theme based on your developer personality

Tech Stack

Stack

Layer Technology
Frontend React 19 · Vite · TypeScript · Tailwind CSS
Animation Framer Motion · Custom tilt/holo engine
State Zustand · TanStack Query
Export html-to-image
API Cloudflare Workers (Cache API)
Hosting Cloudflare Pages (web) + Cloudflare Workers (API)

Architecture

┌─────────────────────────────────────────────────┐
│                    Browser                       │
│                                                  │
│  React 19 + Vite + Tailwind                      │
│  ├── Landing Page (username input)               │
│  ├── 10-slide Deck (auto-advance, gestures)      │
│  ├── Share Studio (theme picker + carousel)      │
│  └── WrappedPoster (all-in-one stat card)        │
│         │                                        │
│         ▼ fetch()                                │
│  ┌──────────────────────────────────┐            │
│  │  Cloudflare Worker (API proxy)   │            │
│  │  ├── GitHub REST API             │            │
│  │  ├── GitHub GraphQL API          │            │
│  │  └── Cache API (1h per user)     │            │
│  └──────────────────────────────────┘            │
└─────────────────────────────────────────────────┘

Getting Started

Prerequisites

  • Node 20+ and npm
  • A GitHub account (for the token)

###1. Create a GitHub Token

Go to github.com/settings/tokens → Generate a classic token → select public_repo scope. No other scopes needed.

###2. Set the Token

cd worker
cp .dev.vars.example .dev.vars
# Paste your token into .dev.vars:
# GITHUB_TOKEN=ghp_xxxxxxxxxxxxxxxx

###3. Run Locally

# Terminal 1 — API proxy (port8787)
cd worker && npm run dev

# Terminal 2 — web app (http://localhost:5173)
cd web && npm run dev

Open http://localhost:5173, enter a GitHub username, and press to start.

No token? Run VITE_USE_MOCK=1 npm run dev in web/ to see the deck with built-in mock data.


Deploy

Worker (Cloudflare Workers)

cd worker
npm run deploy
wrangler secret put GITHUB_TOKEN  # paste your token at the prompt

Web (Cloudflare Pages)

cd web
npm run build
npx wrangler pages deploy dist --project-name devwrapped

Or push to GitHub and connect the repo in the Cloudflare Pages dashboard (root dir: web).


Environment Variables

VariableWherePurposeRequired
GITHUB_TOKENWorker secretGitHub PAT (classic, public_repo scope)
VITE_API_BASEWeb .env.productionWorker API URL (baked at build time)
VITE_USE_MOCKWeb .envSet to 1 for mock data (no token needed)

Project Structure

DevWrapper/
├── web/
│   ├── src/
│   │   ├── components/   # Deck, slides, ShareStudio, CardEffects
│   │   ├── pages/        # Landing, Wrapped
│   │   ├── lib/          # analysis, personality, tilt, themes, API
│   │   ├── store/        # Zustand deck state
│   │   └── hooks/        # TanStack Query data fetching
│   ├── public/favicon/   # SVG + PNG icons
│   └── vercel.json       # SPA routing config
└── worker/
    └── src/index.ts      # Cloudflare Worker (GitHub proxy + cache)

License

MIT

Releases

Packages

Contributors

Languages