Tout a commencé avec une question simple : mon année de code, elle ressemble à quoi ?
Spotify Wrapped, c’est une idée brillante — pas pour les données qu’il donne, mais pour ce qu’il fait ressentir. Il transforme des chiffres abstraits en quelque chose de personnel, de racontable. J’ai voulu la même chose pour GitHub.
Git Wrapped : le pitch en une phrase
Tu entres ton pseudo GitHub. Tu reçois un récap visuel de ton année : commits, jours actifs, langages, rythme de contribution — et un archétype qui résume ton profil de dev.
Le style : néo-brutalisme. Pas de glassmorphisme, pas de dégradés mous. Contours nets, typographie agressive, couleurs qui assument.
# Rien à installer, rien à configurer
# Tu vas sur le site, tu tapes ton pseudo, c'est tout
Puis ça a dégénéré (dans le bon sens)
Une fois le récap individuel en place, la question naturelle était : et si on pouvait se comparer ?
Le classement de devs
J’ai ajouté un leaderboard opt-in qui récompense l’activité réelle — commits, jours actifs sur l’année — pas le volume brut. La différence est importante : quelqu’un qui commite régulièrement pendant 200 jours est plus crédible qu’un pic de 500 commits en une semaine.
Opt-in : tu choisis d’y apparaître. Pas de scraping silencieux.
Claude Wrapped
Le même concept, mais pour Claude Code.
Ton année sur Claude Code résumée : sessions, types de tâches, patterns d’utilisation. Publié sur PyPI, installable en une ligne :
pip install wrapped-claude
C’est un fork adapté du projet original de Kafui Terry Chris HOUNKPATIN — respect total pour le travail initial. 🙏
Self-hostable par défaut
Je voulais que n’importe qui puisse faire tourner ça chez soi sans dépendre de mon infra.
La stack :
- Backend Node.js zéro dépendance externe
- Export PNG par reconstruction SVG native (pas de puppeteer, pas de headless browser)
- KV en fichier local — pas de Redis, pas de Postgres, un fichier
node server.js
# C'est tout. C'est chez toi.
La question de la vie privée
C’est le point sur lequel j’ai été le plus vigilant, et que j’ai documenté explicitement.
La connexion GitHub ne demande qu’un seul scope : read:user. Ça permet de lire ton identité publique, rien de plus.
- ❌ Pas d’accès à tes repos privés
- ❌ Pas d’accès à tes organisations
- ❌ Aucune donnée privée qui remonte
On lit uniquement ton activité publique — les contributions qui sont déjà visibles sur ton profil GitHub.
Je précise ça parce que les gens ont raison d’être méfiants avec les outils qui demandent un accès GitHub. Ici, la surface est volontairement minimale.
Ce que j’ai appris en construisant ça
Sur le produit : une idée simple bien exécutée a plus d’impact qu’une idée complexe à moitié finie. Git Wrapped a eu 992 impressions sur LinkedIn avec zéro budget marketing — juste le post et le lien.
Sur l’open source : publier le code change la dynamique. Ça force à documenter, à nettoyer, à assumer ses choix techniques. Et ça crée des conversations que tu n’aurais pas eues autrement — le commentaire de Kafui sur le fork en est un bon exemple.
Sur le build-in-public : montrer ce qu’on construit au fur et à mesure, c’est inconfortable. On a peur que ce soit trop petit, trop imparfait. Mais c’est exactement ça qui crée de vraies interactions — pas les annonces polish.
Les liens
- Tester Git Wrapped : git-wrapped.salemgnandi.tech
- Le code : github.com/Salemgnk/git-wrapped
- Claude Wrapped sur PyPI :
pip install wrapped-claude
Alors, ton année de code, elle ressemble à quoi ?