Skip to content
A
All projects

2025 · Backend & dashboard

GitMate

AI-powered guide to understanding any codebase

GitMate exists because reading a new codebase takes days, not because there is no documentation, but because documentation never captures how symbols actually relate to each other at runtime.

Year
2025
Role
Backend & dashboard
Status
Open source
Repository
github.com/bigsparsh/gitmate

01Overview

A developer tool that makes onboarding to an unfamiliar codebase interactive: it parses a repository into code entities, indexes them in a FAISS vector store, and answers plain-English questions grounded in the actual code. I contributed across the FastAPI backend and the Next.js dashboard.

02The problem

Onboarding to a new codebase is slow. READMEs rarely capture runtime behavior or dependencies, and tracing how symbols relate to each other is manual and error-prone.

03Goals

  1. 01Turn an unfamiliar repository into something answerable in plain English.
  2. 02Parse source into structured code entities instead of searching raw text.
  3. 03Retrieve and cite the actual code behind every answer.
  4. 04Expose the assistant through a dashboard that makes results inspectable.

04Key features

  • Parses repositories into code entities via Tree-sitter and LSP
  • Indexes code entities in a FAISS vector store
  • Answers plain-English questions grounded in the actual code

05Architecture overview

01The pipeline runs in three stages. First, a parsing stage walks the repository and produces code entities — functions, classes, and symbols — using Tree-sitter for syntax-aware parsing and LSP for language structure.

02Second, an indexing stage stores those entities in a FAISS vector store so they can be retrieved by similarity rather than by hand-written queries.

03Third, a question-answering stage takes a plain-English question, retrieves the relevant entities from the vector store, and generates an answer grounded in that code. LangChain orchestrates the retrieval and generation, with Groq providing the fast LLM inference.

04The FastAPI backend ties these stages together behind an API, and the Next.js dashboard consumes it with Prisma and PostgreSQL handling persistence.

06Challenges faced

  • Keeping answers grounded: the model must answer from the repository, not from general knowledge.
  • Aligning what the parser emits with what the vector store indexes and what the model consumes.
  • Making retrieval useful for open-ended questions, where the relevant code is not a keyword match away.

07Engineering decisions

01

Tree-sitter and LSP over regex

Language-aware parsing gives real structure — functions, signatures, dependencies — instead of fragile text patterns.

02

FAISS for retrieval

An in-process vector store keeps similarity search fast and simple for a codebase-sized corpus.

03

LangChain on Groq

LangChain handles the retrieval-and-generation orchestration while Groq keeps inference latency low enough for interactive questions.

04

Prisma and PostgreSQL for the dashboard

A typed ORM on a relational store keeps the growing dashboard's persistence explicit and maintainable.

08Lessons learned

  • Structure-first indexing makes code questions answerable; raw text search is not enough.
  • A typed ORM keeps a project with a growing dashboard honest and maintainable.
  • Grounded retrieval is what turns a chatbot into a codebase tool.

09Future improvements

  1. 01Broader language coverage in the parser.
  2. 02Deep-link citations that jump straight to the relevant source line.
  3. 03Incremental re-indexing as repositories change, instead of full rebuilds.

Placeholder — swap in real captures

01Parsing stage preview
02Q&A grounded in code
03Dashboard overview