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