Skip to content

mainawycliffe/ripper-the-github-griller

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

31 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐Ÿ”ฅ Ripper - The GitHub Griller

Vertex AI Angular Firebase TypeScript Sponsor

A darkly humorous, AI-powered roaster that tears apart developers based on their GitHub activity! ๐Ÿ’€

๐Ÿš€ Try Live Demo | ๐Ÿ“– Documentation | ๐Ÿค Contributing


๐ŸŽญ What is Ripper?

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

โœจ Features

๐ŸŽญ 8 Unique Roast Personalities

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!"

๐Ÿ”ฅ 5 Intensity Levels

  • ๐Ÿ˜Š 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

๐Ÿ“Š Comprehensive Analysis

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

๐ŸŽจ Features

  • Beautiful, animated UI with custom theme
  • Downloadable roast cards for sharing
  • Social sharing capabilities
  • Fully responsive design
  • Fast and smooth user experience

๐Ÿš€ Getting Started

Prerequisites

  • 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

Installation

  1. Clone the repository

    git clone https://github.com/mainawycliffe/github-griller.git
    cd github-griller
  2. Install dependencies

    pnpm install
  3. Set up Firebase

    firebase login
    firebase use --add
  4. Configure secrets

    Create a .env file in apps/genkit/:

    GITHUB_TOKEN=your_github_token_here

    For production, set Firebase secrets:

    firebase functions:secrets:set GITHUB_TOKEN
  5. 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:YOUR_PROJECT_ID@appspot.gserviceaccount.com" \
      --role="roles/aiplatform.user"

Development

Run the web app:

pnpm nx serve web
# Opens at http://localhost:4200

Run Firebase emulators:

pnpm nx serve genkit
# Functions at http://localhost:5001

Build for production:

# Build web app
pnpm nx build web

# Build Firebase functions
pnpm nx build genkit

Deploy:

# Deploy to Vercel (web app)
vercel deploy --prod

# Deploy to Firebase (functions)
firebase deploy --only functions

๐Ÿ—๏ธ Project Structure

This is an Nx monorepo with two main applications:

  • apps/genkit/ - Firebase Functions backend with AI orchestration
  • apps/web/ - Angular frontend application

๐Ÿ› ๏ธ Tech Stack

Frontend

  • Angular 20 - Modern web framework
  • Tailwind CSS - Styling
  • TanStack Query - Data fetching and state management

Backend

  • 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

Build Tools

  • Nx - Monorepo build system
  • TypeScript - Type safety

๐ŸŽจ Customization

Adding New Personalities

  1. Update backend (apps/genkit/src/index.ts):

    Add your personality to the enum and create a prompt for it.

  2. Update frontend (apps/web/src/app/app.ts):

    Add the personality to the UI with an emoji and description.



๐Ÿ› ๏ธ Tech Stack

Frontend

  • Angular 20 - Standalone components, signals, control flow
  • Tailwind CSS 3 - Utility-first styling
  • TanStack Query - State management
  • html2canvas - Screenshot generation
  • Custom animations - CSS keyframes

Backend

Backend

  • 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

Build Tools

  • Nx 21 - Monorepo build system
  • esbuild - Fast bundling
  • TypeScript 5 - Type safety

๐ŸŽจ Customization

Adding New Personalities

  1. 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...',
    };
  2. Update frontend (apps/web/src/app/app.ts):

    personalities = [
      {
        value: 'your-new-personality',
        label: '๐ŸŽญ Your Label',
        emoji: '๐ŸŽญ',
        description: 'Short description',
      },
    ];

๐Ÿค Contributing

Contributions are welcome! Here's how:

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

๐Ÿ“ License

MIT License - see LICENSE file for details


๐Ÿ‘จโ€๐Ÿ’ป Author

Maina Wycliffe


๐Ÿ™ Acknowledgments

  • 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

โš ๏ธ Disclaimer

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! โญ

About

Get Roasted based on your public GitHub Activity

Resources

Stars

Watchers

Forks

Releases

No releases published

Sponsor this project

 

Packages

 
 
 

Contributors

โšก