GitJudged
A team hackathon app that scores your commit message from 1 to 10, lets a bot roast it in a Discord-style chat, then commits only once you confirm.
The code is private for now
Tech stack
- React 19
- TypeScript
- Vite
- Tailwind CSS
- oxlint
- Node.js
- GitHub REST API
- Gemini
My part
A four-person hackathon team project.
What it does
- Type a draft commit message and get a score from 1 (good) to 10 (terrible), in a Discord-style chat channel
- DramaBot posts an over-the-top reaction in a random comedic style, such as a sports commentator or a breakup text, building to an all-caps meltdown at 10
- The commit only goes to GitHub after you confirm
- Sign in with GitHub, list your repos or create a throwaway one, browse commit history, and read or commit a single file
- Real commits from your own clones: it shows your changed files, pulls newer commits first, runs add, commit and push, and undoes the commit if the push fails
- A shared leaderboard of the 10 worst pushed messages, shown as a live Hall of shame
- Drama stats: today's average score with a comment on how it compares to yesterday, and a chart of the last 24 hours
- A feed of every pushed commit and its roast, kept in the browser
- Shareable roast cards: any roast becomes an image you can download or copy, or copy as text
- A guardrail when picking a repo: names like demo or sandbox are recommended, and names like prod or payments are flagged as dangerous
How it works
- Scoring is rule-based and shared between the backend and the frontend's mock mode. Short messages, vague verbs like "fix" or "wip", filler, buzzwords, repetition, length and a missing ticket number all push the score up. Mentioning a ticket or a file name brings it down.
- GitHub sign-in uses state and PKCE checks, the GitHub token never reaches the browser, and every write needs a CSRF token.
- The roast prompt guards against commit messages that try to give the bot instructions. Without an AI key it falls back to canned reactions.
- The backend is a plain Node.js server with no npm dependencies, tested with Node's built-in test runner. There's no database: sign-in lives in an encrypted cookie and the leaderboard in a JSON file.
- The frontend has a mock API mode, so it can run without the backend.