A darkly humorous, AI-powered roaster that tears apart developers based on their GitHub activity! π
Ripper is a Vertex AI-powered Halloween/dev-themed web app that analyzes your public GitHub profile and delivers savage (but playful) roasts based on your repos, commits, starred projects, and coding patterns. Think of it as a code review from your worst nightmare! π
Built with Firebase Genkit, Vertex AI (Gemini 2.5 Flash), Angular 20, and Tailwind CSS, Ripper features:
- π€ 8 unique AI personalities (Gordon Ramsay, Shakespeare, Master Yoda, Kenyan Sheng, and more!)
- π₯ 5 intensity levels (from gentle ribbing to absolutely charred)
- π¨ Sleek emerald-cyan trickster theme with animations
- πΈ Downloadable roast cards for sharing
- π Social sharing capabilities
| Personality | Description | Example |
|---|---|---|
| π₯ Default | Witty, sarcastic code reviewer | Classic tech roasts |
| π¨βπ³ Gordon Ramsay | Kitchen nightmare meets code review | "This code is RAW!" |
| π΄ββ οΈ Pirate Captain | High seas coding critique | "Arrr, this be shipwrecked code!" |
| π Shakespeare | Theatrical, poetic roasts | "To code or not to code..." |
| π Gen Z | Modern slang and memes | "This code is mid, no cap" |
| π Nice Guy | Backhanded compliments | "It's brave you tried..." |
| π§ Master Yoda | Backwards wisdom | "Much to learn, you have" |
| π°πͺ Kenyan Sheng | Nairobi street slang | "Mbaya sana!" |
- π Gentle Ribbing - Light-hearted teasing
- π Medium Rare - Mildly sarcastic
- π₯ Well Done - Standard roasting (sweet spot)
- π₯ Extra Crispy - Aggressive but clever
- β οΈ Absolutely Charred - No mercy, maximum savage
Ripper analyzes:
- Profile data - Bio, followers, company, and account activity
- Repositories - Project names, stars, activity patterns
- Commit messages - Quality and patterns
- Language statistics - Programming language usage
- Starred repos - Interests vs actual work
- Beautiful, animated UI with custom theme
- Downloadable roast cards for sharing
- Social sharing capabilities
- Fully responsive design
- Fast and smooth user experience
- Node.js 18+ and pnpm 9+
- Firebase CLI (
npm install -g firebase-tools) - Nx CLI (optional, installed as dev dependency)
- GitHub Personal Access Token (for API access)
- Google Cloud Project with Vertex AI enabled
-
Clone the repository
git clone https://github.com/mainawycliffe/github-griller.git cd github-griller -
Install dependencies
pnpm install
-
Set up Firebase
firebase login firebase use --add
-
Configure secrets
Create a
.envfile inapps/genkit/:GITHUB_TOKEN=your_github_token_here
For production, set Firebase secrets:
firebase functions:secrets:set GITHUB_TOKEN
-
Enable Vertex AI and set permissions
# Enable Vertex AI API gcloud services enable aiplatform.googleapis.com --project=YOUR_PROJECT_ID # Grant IAM permissions to Cloud Functions service account gcloud projects add-iam-policy-binding YOUR_PROJECT_ID \ --member="serviceAccount:[email protected]" \ --role="roles/aiplatform.user"
Run the web app:
pnpm nx serve web
# Opens at http://localhost:4200Run Firebase emulators:
pnpm nx serve genkit
# Functions at http://localhost:5001Build for production:
# Build web app
pnpm nx build web
# Build Firebase functions
pnpm nx build genkitDeploy:
# Deploy to Vercel (web app)
vercel deploy --prod
# Deploy to Firebase (functions)
firebase deploy --only functionsThis is an Nx monorepo with two main applications:
apps/genkit/- Firebase Functions backend with AI orchestrationapps/web/- Angular frontend application
- Angular 20 - Modern web framework
- Tailwind CSS - Styling
- TanStack Query - Data fetching and state management
- Firebase Genkit - AI orchestration framework
- Vertex AI (Gemini 2.5 Flash) - Google's LLM for generating roasts
- Firebase Functions - Serverless backend
- GitHub REST API - Profile data fetching
- Nx - Monorepo build system
- TypeScript - Type safety
-
Update backend (
apps/genkit/src/index.ts):Add your personality to the enum and create a prompt for it.
-
Update frontend (
apps/web/src/app/app.ts):Add the personality to the UI with an emoji and description.
- Angular 20 - Standalone components, signals, control flow
- Tailwind CSS 3 - Utility-first styling
- TanStack Query - State management
- html2canvas - Screenshot generation
- Custom animations - CSS keyframes
- Firebase Genkit - AI orchestration framework
- Vertex AI (Gemini 2.5 Flash) - Google's LLM for generating roasts
- Firebase Functions - Serverless backend
- Zod - Schema validation
- GitHub REST API - Profile data fetching
- Nx 21 - Monorepo build system
- esbuild - Fast bundling
- TypeScript 5 - Type safety
-
Update backend (
apps/genkit/src/index.ts):personality: z.enum([ 'default', 'your-new-personality', // ... other personalities ]); const personalityPrompts: Record<string, string> = { 'your-new-personality': 'Your prompt description here...', };
-
Update frontend (
apps/web/src/app/app.ts):personalities = [ { value: 'your-new-personality', label: 'π Your Label', emoji: 'π', description: 'Short description', }, ];
Contributions are welcome! Here's how:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
MIT License - see LICENSE file for details
Maina Wycliffe
- Portfolio: mainawycliffe.dev
- GitHub: @mainawycliffe
- Sponsor: GitHub Sponsors π
- Google Cloud - For Vertex AI and Gemini models
- Firebase - For Genkit and Cloud Functions
- Nx Team - For the amazing monorepo tools
- Angular Team - For Angular 20 and standalone components
- Open Source Community - For all the incredible packages
This app is meant for fun and entertainment! Roasts are generated by AI and should not be taken seriously. All data is fetched from public GitHub APIs - no private information is accessed.
Made with π (and a dash of evil) by Maina Wycliffe
β Star this repo if you enjoyed getting roasted! β