Skip to content

deepraj02/Commitz

Repository files navigation

Commitz

Commitz Logo

Convert YouTube videos into smart GitHub issues with AI-powered analysis.

Overview

Commitz is a modern Flutter application that transforms educational YouTube videos into structured GitHub issues. By leveraging Google's Gemini AI technology, Commitz extracts knowledge from video content and creates well-formatted issues complete with learning objectives, implementation steps, and best practices.

Features

  • YouTube Video Processing: Extract and analyze transcripts from any YouTube video
  • AI-Powered Issue Generation: Convert video content into well-structured GitHub issues
  • Responsive Design: Works across mobile, tablet, and desktop platforms
  • Project Management: View and manage all your generated projects in one place
  • Secure Authentication: Firebase authentication for secure user management

Architecture

Commitz uses a modern architecture with:

  • Frontend: Flutter framework with Riverpod for state management
  • Backend: Python FastAPI service for API endpoints
  • AI Processing: Google Gemini API for natural language processing
  • Caching: Redis for performance optimization
  • Storage: Firebase Firestore for project data persistence
flowchart TB
    %% Main components with descriptive labels
    subgraph Client["Client"]
        Flutter["Flutter Web/Mobile App"]
        subgraph State["State Management"]
            Riverpod["Riverpod Providers"]
        end
        subgraph UI["UI Components"]
            Auth["Auth Pages"]
            Home["Home Pages"]
            Project["Project Pages"]
        end
        Router["Go Router"]
    end

    subgraph Backend["Python Backend"]
        FastAPI["FastAPI Service"]
        YTService["YouTube Transcript Service"]
        GeminiService["Gemini AI Service"]
        Redis["Redis Cache"]
    end

    subgraph Firebase["Firebase Services"]
        Auth_FB["Firebase Authentication"]
        Firestore["Firestore Database"]
    end

    subgraph External["External Services"]
        YT_API["YouTube API"]
        Gemini_API["Google Gemini API"]
    end

    %% Connections and data flow
    Flutter --> Router
    Router --> Auth
    Router --> Home
    Router --> Project
    
    Auth --> Auth_FB
    Home --> Riverpod
    Project --> Riverpod
    
    Riverpod --> FastAPI
    Riverpod <--> Firestore
    
    FastAPI --> YTService
    FastAPI --> GeminiService
    FastAPI <--> Redis
    
    YTService --> YT_API
    GeminiService --> Gemini_API
    
    FastAPI --> Firestore
    
    %% Authentication flow
    Auth_FB <--> Flutter
    
    %% Styling
    classDef flutter fill:#42A5F5,color:white
    classDef firebase fill:#FFCA28,color:black
    classDef backend fill:#26A69A,color:white
    classDef external fill:#78909C,color:white
    
    class Flutter,Router,Auth,Home,Project,Riverpod,UI,State flutter
    class Auth_FB,Firestore,Firebase firebase
    class FastAPI,YTService,GeminiService,Redis,Backend backend
    class YT_API,Gemini_API,External external
Loading

Getting Started

Prerequisites

  • Flutter 3.x (latest stable version)
  • Dart SDK
  • Firebase project setup
  • Python 3.8+ (for backend)
  • Docker
  • Gemini API Key

Setup

  1. Clone the repository:

    git clone https://github.com/deepraj02/commitz.git
    cd commitz
  2. Env Setup: In the backend/ directory create a .env file and add your Gemini API key

    GEMINI_API_KEY= XXXX
  3. Install Flutter dependencies:

    flutter pub get
  4. Set up Firebase:

    • Create a Firebase project
    • Configure Firebase for Flutter following the official guide
    • Enable Firebase Authentication and Firestore
  5. Set up and run backend:

     cd backend && docker compose up -d --build
  6. Run the Flutter app:

    flutter run -d chrome

Usage

  1. Log in to your account using Firebase authentication
  2. Create a new project by providing a project name
  3. Paste a YouTube URL of an educational/tutorial video
  4. Generate issues by clicking the "Generate" button
  5. View and manage your projects and generated issues

Tech Stack

  • Frontend:

    • Flutter
    • Riverpod (state management)
    • Freezed (immutable models)
    • Go Router (navigation)
    • Dio (API communication)
  • Backend:

    • Python
    • FastAPI
    • Google Gemini API
    • YouTube Transcript API
    • Redis
  • Storage/Authentication:

    • Firebase Authentication
    • Firestore

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

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

About

Make more out of regular boring youtube tutorials !

Resources

Stars

Watchers

Forks

Packages

No packages published