Skip to content

JastinXyz/github-boardingpass

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

github-boardingpass

Your GitHub profile, reimagined as a developer boarding pass.

A personalized card for your GitHub profile README — developer class, stats, streak, and activity, automatically generated from your GitHub data.

github-boardingpass preview

TypeScript Fastify License


Quick Start

Drop this into your GitHub profile README:

![github-boardingpass](https://boardingpass.jstnlt.my.id/api/card?username=YOUR_USERNAME)

Replace YOUR_USERNAME. Done.

The hosted instance uses a shared GitHub token (5k req/hour). If you hit limits or want guaranteed uptime, self-host.


Features

  • Auto-detected class — your top languages decide whether you're a Frontend Mage, Backend Knight, DevOps Ranger, and so on
  • RPG-style stats — CODE, COLLAB, SHIP, STACK, IMPACT scaled to 1–99
  • Level & rarity — XP-based level (1–99) and rarity tier (COMMON → LEGENDARY)
  • Commit streak — pulled from your contribution calendar
  • Randomized airline brand — deterministic per user (GITHUB AIRWAYS, OCTO AIR, HOTFIX AIRWAYS, …)
  • Dark / light themes — and a responsive <picture> snippet that follows GitHub's mode
  • SVG or PNG — embed however you like

Customization

Parameter Values Default Description
username GitHub username Required
theme dark, light dark Card color theme
format svg, png svg Output format
scale 0.53 1.35 Output size multiplier (viewBox preserved)
class any developer class auto Force a class (see below)

Themes

<!-- Dark (default) -->
![card](https://boardingpass.jstnlt.my.id/api/card?username=JastinXyz)

<!-- Light -->
![card](https://boardingpass.jstnlt.my.id/api/card?username=JastinXyz&theme=light)

Responsive (follows GitHub dark/light mode)

<picture>
  <source media="(prefers-color-scheme: dark)"
    srcset="https://boardingpass.jstnlt.my.id/api/card?username=JastinXyz&theme=dark">
  <img src="https://boardingpass.jstnlt.my.id/api/card?username=JastinXyz&theme=light"
    alt="github-boardingpass">
</picture>

Force a class (debug / preference)

![card](https://boardingpass.jstnlt.my.id/api/card?username=JastinXyz&class=DevOps%20Ranger)

Developer Classes

Your class is detected from your top languages and contribution patterns.

Class Code Detected when
Frontend Mage FM JS / TS / CSS / HTML dominant
Backend Knight BK Go / Java / Rust / C# dominant
DevOps Ranger DR Shell / HCL / Dockerfile / Nix heavy
Fullstack Paladin FP Frontend + backend both significant
Data Sorcerer DS Python / R / Jupyter dominant
Mobile Assassin MA Kotlin / Swift / Dart dominant
Open Source Bard OB Contributed to 10+ repos

Titles

The title under your name evolves as you level up.

Class Lv 1–32 Lv 33–65 Lv 66–99
Frontend Mage Pixel Apprentice UI Conjurer Interface Archmage
Backend Knight Code Squire API Guardian System Overlord
DevOps Ranger Script Novice Pipeline Hunter Cloud Warden
Fullstack Paladin Code Initiate Stack Warrior Omni Developer
Data Sorcerer Data Acolyte Model Weaver Algorithm Oracle
Mobile Assassin App Trainee Touch Ninja Platform Shadow
Open Source Bard Contributor Novice Community Singer Repo Legend

Stats

Stats scale to 1–99 using a sqrt curve, so mid-tier devs get meaningful numbers while 99 stays aspirational.

Stat Measures Caps at 99 around
CODE Total commits 3,000
COLLAB Code reviews 300
SHIP Pull requests 1,000
STACK Repos contributed to 20
IMPACT Stars received 2,000

Level & Rarity

Level = min(99, floor(sqrt(XP / 10))), where XP = commits·2 + PRs·5 + issues·3 + stars·4 + reviews·4 + contributedTo·10 + followers.

Rarity Level range
COMMON 1–19
UNCOMMON 20–39
RARE 40–59
EPIC 60–79
LEGENDARY 80–99

API

Endpoint Params Returns
GET /api/card username, format, theme, class SVG or PNG image
GET /api/persona username Persona JSON
GET /health { status: "ok" }

Responses are cached in-memory (TTL 10 min by default). Same user + params = cache hit.


Self-Hosting

Self-hosting gives you a dedicated GitHub token — no shared rate limits.

git clone https://github.com/JastinXyz/github-boardingpass
cd github-boardingpass
pnpm install
cp .env.example .env
# fill in GITHUB_TOKEN
pnpm build
pnpm start

Generate a token (repo + read:user scopes): https://github.com/settings/tokens/new?scopes=repo,read:user&description=github-boardingpass

Environment

Variable Default Description
GITHUB_TOKEN Required PAT
PORT 3000 Server port
CACHE_TTL_MS 600000 Cache TTL in ms (10 min)
CACHE_MAX_ENTRIES 500 Max cached entries per layer

Once running, swap boardingpass.jstnlt.my.id for your own URL.


Development

pnpm dev        # hot reload (tsx watch)
pnpm build      # tsup build
pnpm start      # run built server
pnpm typecheck  # tsc --noEmit

Quick visual test:

curl 'http://localhost:3000/api/card?username=JastinXyz' > out.svg
open out.svg

See CLAUDE.md for architecture details.


Contributing

Contributions welcome. Open an issue or PR.

License

MIT

About

Your GitHub profile as a developer boarding pass. RPG-style stats, class detection, embed in your README.

Topics

Resources

License

Stars

Watchers

Forks

Contributors