Project Info
This project did not submit a demo video on Devpost.
Inspiration
You finished your video. It looks amazing. You just need to find the right music. But that’s the hard part. You spend hours searching for a good song that won’t get your video taken down by a copyright claim. It’s a huge headache, and it kills your creative momentum. We think that’s backward. Finding music should be inspiring, not frustrating. That’s why we’re making Gita. What if you could create your own unique, copyright-safe music that matches the vibe of your video, just by uploading it?
What it does
Finding the right music for your video is a huge pain. It takes forever, and the good stuff either costs a lot or comes with scary copyright rules. We built Gita to fix that. It’s simple. You give Gita your finished video, and it creates a brand new soundtrack that matches the energy and emotion of your footage. The music is 100% yours to use, and of course, copyright-free. No more searching. No more fees. Just your video, with the perfect background music. Tech stack React: Powers the user-friendly website where people upload their videos and interact with Gita. Python: Serves as the core programming language for our backend, connecting all the different services and agents together. FastAPI: Creates the high-speed API that allows our React frontend to communicate with the Python backend and AI agents. Google ADK: Provides the framework for building and orchestrating our team of specialized AI agents that analyze the video and create the music. Gemini (Lyria AI): Acts as the creative AI "brain" that actually generates unique, instrumental background music based on the text prompts our agents create. Groq: A specialized AI hardware platform we use to generate detailed prompt for Lyria AI to generate music. AI agents Video Processor: The initial agent that analyzes the uploaded video to extract key visual and audio information for the AI to understand. Prompt Generator: An AI agent that takes the video analysis and creatively writes the detailed text instruction needed for the music AI. Prompt Checker: A validation step or agent that ensures the generated text prompt is clear, safe, and well-structured before sending it to the music AI. Music Generator: The core creative AI, Lyria, that reads the final prompt and composes a unique, instrumental piece of background music. Orchestrator: The master agent that manages the entire workflow, telling each component when to start and passing the data between them from start to finish. Next Steps More Customization: We will give users more creative control by letting them select genres, choose specific instruments, or adjust the tempo of their generated music. More Fine-Tuning: We will train our AI agents on more specific examples to make them better at understanding the nuances of a video and creating more accurate, emotionally resonant music.
🎵 Gita - Copyright-Free Music Generator
A simple app to help content creators find copyright-free background music for their videos.
🚀 Quick Start
Option 1: Automated Setup (Recommended)
git clone <your-repo-url>
cd gita
./setup.sh
Option 2: Manual Setup
Frontend (React)
cd frontend
npm install
npm start
Backend (Python)
cd backend
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
python api/search-music.py
🔑 Environment Variables Setup
Important for Judges: You need to create a .env file in the backend/ directory with the following API keys to run the application:
Required Environment Variables
Create a file named .env in the backend/ directory with these variables:
# Supabase Configuration (Required)
SUPABASE_URL="your_supabase_project_url"
SUPABASE_ANON_KEY="your_supabase_anon_key"
# Groq API Key (Required for AI vision analysis)
GROQ_API_KEY="your_groq_api_key"
# Google Cloud Configuration (Required for Lyria music generation)
PROJECT_ID="your_google_cloud_project_id"
GOOGLE_CLOUD_PROJECT="your_google_cloud_project_id"
GOOGLE_CLOUD_LOCATION="us-central1"
GOOGLE_GENAI_USE_VERTEXAI="True"
# Gemini API Key (Alternative AI model)
GEMINI_API_KEY="your_gemini_api_key"
# CORS Configuration (Optional - defaults to http://localhost:3000)
CORS_ORIGINS=http://localhost:3000
Frontend Environment Variables
Create a file named .env in the frontend/ directory:
# API URL for connecting to backend
REACT_APP_API_URL=http://localhost:8000
How to Get the Required API Keys
-
Supabase Setup:
- Go to supabase.com and create a new project
- Navigate to Settings → API
- Copy the "Project URL" and "anon public" key
-
Groq API Key:
- Visit console.groq.com
- Sign up and create an API key
- Copy the API key
-
Google Cloud Project ID:
- Go to Google Cloud Console
- Create a new project or select existing one
- Enable the Vertex AI API
- Set up authentication (run
gcloud auth application-default login) - Copy your Project ID
Database Setup
You'll also need to create the following tables in your Supabase database:
-- Videos table
CREATE TABLE videos (
id UUID DEFAULT gen_random_uuid() PRIMARY KEY,
filename TEXT NOT NULL,
original_filename TEXT,
file_path TEXT NOT NULL,
file_size_mb FLOAT,
duration_seconds FLOAT,
fps FLOAT,
resolution TEXT,
frame_count INTEGER,
trim_start FLOAT,
trim_end FLOAT,
trim_duration FLOAT,
processing_status TEXT DEFAULT 'uploaded',
frames_extracted BOOLEAN DEFAULT FALSE,
vision_analysis TEXT,
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
);
-- Music generations table
CREATE TABLE music_generations (
id UUID DEFAULT gen_random_uuid() PRIMARY KEY,
video_id UUID REFERENCES videos(id),
vision_prompt TEXT,
music_prompt TEXT,
music_file_path TEXT,
music_file_size_mb FLOAT,
generation_status TEXT DEFAULT 'pending',
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
);
Storage Buckets
Create these storage buckets in Supabase:
videos- for uploaded video filesframes- for extracted video framesmusic- for generated music filesfinal-videos- for final videos with music
🌐 Access the App
- Frontend: http://localhost:3000
- Backend API: http://localhost:8000
Local Development
- Clone the repository
- Run
./setup.shfor automated setup - Start backend:
cd backend && source venv/bin/activate && python server.py - Start frontend:
cd frontend && npm start - Open http://localhost:3000
Analysis
View
Metric
- 18
- 5
- 5
Figures cover GitHub contributors during the hackathon window. A co-authored commit counts in full for each author, so per-member totals add up to more than the whole-team figures.
Technology
- CSSIn code
- FastAPIIn code
- HTMLIn code
- JavaScriptIn code
- PythonIn code
- ReactIn code
- SupabaseIn code
7 of 7 appear in the indexed code.
AI coding agents
No AI coding agent signals were found in this repository.
Detected from committed agent config files and commit authorship. Absence of a signal is not proof an agent was unused.
Codebase size
Source size
197 KB
Source files
23
Counts recognized source files only; vendored directories, binaries and lockfiles are excluded, so this is smaller than the repository on disk.
Repository
erik-ksth/gita
40 files · 15.6 MB · @ 4e50f91
Structure
Interface
5 files · 13%Screens, components and styles rendered to the user.
API & routing
1 file · 3%Request entry points: routes, handlers and controllers.
Application logic
14 files · 35%Domain rules, services and shared utilities.
Supporting
Layers are inferred from where files sit in the tree, not from reading the code. A project that names its directories unconventionally will read oddly here — open the file browser to check anything the diagram implies.
Languages
- Python54%
- JavaScript18%
- CSS18%
- Markdown10%
- Shell0%
- HTML0%
Share of indexed source by file size. Binary and vendored files are excluded.
Dependencies
backend/requirements.txt
pypi · 12- deprecated
- fastapi
- google-adk
- moviepy
- opencv-python-headless
- Pillow
- pydantic
- python-dotenv
- python-multipart
- requests
- supabase
- uvicorn[standard]
frontend/package.json
npm · 5- @ffmpeg/ffmpeg
- @ffmpeg/util
- react
- react-dom
- react-scripts
Declared in the repository’s manifests at the indexed commit. A declared package is not proof it is used, and runtime dependencies are listed first.
This project’s features have not been analysed yet.
Export this project's context (description, README, evidence, key source files) to chat with an AI agent elsewhere.