- Repository Ingestion: Clone and process any public GitHub repository
- Intelligent Chunking: Automatically splits code files into meaningful chunks
- Vector Search: Uses embeddings to find relevant code snippets
- Natural Language Queries: Ask questions about repositories in plain English
- Modern React UI: Fast and responsive interface built with Vite
- Real-time Processing: Live feedback during repository ingestion
├── backend/
│ ├── ingest.py # Repository content extraction
│ ├── rag.py # RAG implementation
│ ├── main.py # FastAPI backend server
│ ├── app.py # Streamlit Testing UI
│ └── processed_files.json # Cached files for faster lookup
│
├── frontend/
│ ├── public/
│ ├── src/
│ │ ├── assets/ # Project assets
│ │ ├── components/ # React components
│ │ ├── App.css # Main styles
│ │ ├── App.jsx # Main React component
│ │ ├── index.css # Global styles
│ │ └── main.jsx # React entry point
│ ├── .gitignore
│ ├── eslint.config.js
│ ├── index.html # HTML template
│ ├── package.json # Node.js dependencies
│ ├── package-lock.json
│ └── vite.config.js # Vite configuration
│
├── .gitignore
└── README.md
git clone https://github.com/chaitra-samant/GitOracle
cd GitOracle# Navigate to backend directory
cd backend
# Create virtual environment
python -m venv myenv
myenv/Scripts/activate
# Install Python dependencies
pip install -r requirements.txt# Navigate to frontend directory
cd ../frontend
# Install Node.js dependencies
npm installCreate a .env file in the backend directory:
# GROQ API
GROQ_API_KEY=your_groq_api_key_here
# API Configuration
API_BASE_URL=http://localhost:8000# Terminal 1 - from backend directory
cd backend
uvicorn main:app --reload --host 0.0.0.0 --port 8000# Terminal 2 - from frontend directory
cd frontend
npm run dev- React Frontend: http://localhost:5173
- FastAPI Backend: http://localhost:8000
- API Documentation: http://localhost:8000/docs
- Open the React interface at http://localhost:5173
- Enter a GitHub repository URL (e.g.,
https://github.com/username/repo) - Click "🚀 Ingest Repository"
- Wait for processing to complete with real-time progress updates
- After successful ingestion, use the query interface
- Ask questions like:
- "What does this repository do?"
- "How do I use the main function?"
- "What are the key components?"
- "Show me the database models"
- "Explain the API endpoints"
The system processes these file types by default:
.py(Python).js,.jsx(JavaScript).ts,.tsx(TypeScript).java(Java).cpp,.c,.h(C/C++).cs(C#).go(Go).rs(Rust).md(Markdown).txt(Text).yml,.yaml(YAML).json(JSON)
- Fork the repository
- Create a feature branch (
git checkout -b feature/new-feature) - Make your changes:
- Backend changes in
backend/ - Frontend changes in
frontend/src/
- Backend changes in
- Test your changes:
- Backend: Run FastAPI server and test endpoints
- Frontend: Run
npm run devand test UI
- Commit your changes (
git commit -m 'Add new feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request




