The variable name contains “LEGACY” for backward compatibility, but it now points to the primary external backend in production.
🤔 About
I created this because I wanted to contribute to open-source projects but quickly realized their codebases are too massive for me to dig through manually, so this helps me get started - but it’s definitely got many more use cases!
Given any public (or private!) GitHub repository it generates diagrams in Mermaid.js with OpenAI’s GPT-5.4 mini! (Previously Claude 3.5 Sonnet)
I extract information from the file tree and README for details and interactivity (you can click components to be taken to relevant files and directories).
Most of what you might call the “processing” of this app is done with prompt engineering and a 3-step streaming pipeline in the FastAPI backend under /backend.
🔒 How to diagram private repositories
You can simply click on “Private Repos” in the header and follow the instructions by providing a GitHub personal access token with the repo scope.
You can also self-host this app locally (backend separated as well!) with the steps below.
🛠️ Self-hosting / Local Development
Clone the repository
git clone https://github.com/ahmedkhaleel2004/gitdiagram.git
cd gitdiagram
Install dependencies
pnpm i
Set up environment variables (create .env)
cp .env.example .env
Then edit the .env file with your OpenAI API key and optional GitHub personal access token.
Start local database
chmod +x start-database.sh
./start-database.sh
When prompted to generate a random password, input yes.
The Postgres database will start in a container at localhost:5432
Initialize the database schema
pnpm db:push
You can view and interact with the database using pnpm db:studio
Run frontend
pnpm dev
You can now access the website at localhost:3000.
Run FastAPI backend (recommended if you want parity with production):
docker-compose up --build -d
docker-compose logs -f api
To route frontend calls to the external backend, set:
NEXT_PUBLIC_USE_LEGACY_BACKEND=true
NEXT_PUBLIC_API_DEV_URL=http://localhost:8000
For a full machine setup guide (Node/Python/uv versions + verification), see docs/dev-setup.md.
Quick validation:
pnpm check
pnpm test
pnpm build
Railway backend docs: docs/railway-backend.md.
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
GitDiagram
Turn any GitHub repository into an interactive diagram for visualization in seconds.
You can also replace
hubwithdiagramin any Github URL to access its diagram.🚀 Features
⚙️ Tech Stack
OPENAI_MODEL)🔄 Backend Architecture Update
GitDiagram now runs its primary generation backend on FastAPI (deployed on Railway).
Frontend calls are routed to the external backend by setting:
NEXT_PUBLIC_USE_LEGACY_BACKEND=trueNEXT_PUBLIC_API_DEV_URL=https://<your-railway-domain>The variable name contains “LEGACY” for backward compatibility, but it now points to the primary external backend in production.
🤔 About
I created this because I wanted to contribute to open-source projects but quickly realized their codebases are too massive for me to dig through manually, so this helps me get started - but it’s definitely got many more use cases!
Given any public (or private!) GitHub repository it generates diagrams in Mermaid.js with OpenAI’s GPT-5.4 mini! (Previously Claude 3.5 Sonnet)
I extract information from the file tree and README for details and interactivity (you can click components to be taken to relevant files and directories).
Most of what you might call the “processing” of this app is done with prompt engineering and a 3-step streaming pipeline in the FastAPI backend under
/backend.🔒 How to diagram private repositories
You can simply click on “Private Repos” in the header and follow the instructions by providing a GitHub personal access token with the
reposcope.You can also self-host this app locally (backend separated as well!) with the steps below.
🛠️ Self-hosting / Local Development
Then edit the
.envfile with your OpenAI API key and optional GitHub personal access token.When prompted to generate a random password, input yes. The Postgres database will start in a container at
localhost:5432You can view and interact with the database using
pnpm db:studioYou can now access the website at
localhost:3000.Run FastAPI backend (recommended if you want parity with production):
To route frontend calls to the external backend, set:
NEXT_PUBLIC_USE_LEGACY_BACKEND=trueNEXT_PUBLIC_API_DEV_URL=http://localhost:8000For a full machine setup guide (Node/Python/uv versions + verification), see
docs/dev-setup.md.Quick validation:
Railway backend docs:
docs/railway-backend.md.Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
Acknowledgements
Shoutout to Romain Courtois‘s Gitingest for inspiration and styling
🤔 Future Steps