A tiny creature that lives on your GitHub profile.
No login. No token. Just add your Gitty.
Replace YOUR_USERNAME with your GitHub username. Until you do, the image is an unrevealed egg:
Or generate the snippet at https://gittygotchi.alpdogan.co.
The whole image is clickable because the README wraps the SVG in a Markdown link. Do not rely on links inside the SVG.
Everyone starts with an egg.
GitHub account history influences which class hatches.
Activity after adoption determines growth.
- Earth
- Water
- Air
- Fire
- Psy
Earth, Water, Air, and Fire are equal normal classes. None of them is stronger than the others.
Class is assigned at adoption and does not change afterward.
Gitty can look hungry, happy, excited, sleeping, resting, or hibernating. It never dies. Weekends are not punished. Long inactivity becomes hibernation, then Gitty wakes when activity returns.
No OAuth.
No PAT.
No GitHub login.
No access to private repository contents.
Only publicly exposed GitHub data is consumed.
GitHub contribution graphs may include anonymized private activity depending on the GitHub user's privacy settings.
flowchart TD
readme[GitHub README] --> cache[Cloudflare Edge Cache]
cache --> worker[GittyGotchi Worker]
worker --> d1[D1]
worker --> github[GitHub]
d1 --> domain[Domain Engine]
worker --> domain
domain --> svg[SVG Renderer]
The Worker serves a polished landing page and share pages plus a cached SVG rendered from stored pet state. The first /{username} or /{username}.svg visit creates the D1 row.
Everyone starts as an egg. Growth and class art is ready in the renderer.
GitHub fetching, the domain engine, and the D1 repository are wired to HTTP. CI still mocks GitHub.
Prerequisites: Node 24 and pnpm 12.
corepack enable
corepack prepare pnpm@12.3.4 --activate
pnpm install
lefthook install
pnpm --filter @gittygotchi/worker exec wrangler d1 migrations apply gittygotchi --local
pnpm devpnpm dev applies local D1 migrations, then starts Wrangler at http://localhost:8787. The local database is gittygotchi-local under .wrangler/state. Without 0001_initial.sql, HTTP hits no such table: pets. Production D1 is separate; apply remote migrations only when deploying.
pnpm checkThat runs format check, lint, typecheck, and tests. CI does not call live GitHub.
See CONTRIBUTING.md for D1, Wrangler, and production notes. CI never deploys. Production deploys only from protected main or a tagged release.
See CONTRIBUTING.md and docs/GITHUB_RULESET.md.
See SECURITY.md.