Repo Engine is an extensible lightweight repository analysis engine designed to understand the structure and architecture of Git repositories. It begins by generating an accurate project directory tree from a GitHub repository URL and is designed to evolve into a comprehensive repository intelligence platform capable of detecting technologies, generating documentation, analyzing project architecture, and producing insights for developers.
The project follows a modular architecture that allows new capabilities to be added without modifying the core engine.
- Fetches repository information using the GitHub REST API.
- Retrieves the complete repository file tree recursively.
- Generates a clean hierarchical directory structure.
- Supports public GitHub repositories.
- Lightweight and modular architecture.
- Fast retrieval without cloning repositories.
- Command-line interface for local usage.
- Automatic README generation.
- README improvement and modernization.
- Primary programming language detection.
- Framework detection (React, Vue, Angular, Django, Flask, Express, etc.).
- Package manager detection.
- Build system detection.
- Entry point identification.
- Configuration file analysis.
- Test directory detection.
- Documentation discovery.
- CI/CD configuration detection.
- Docker environment detection.
- GitHub Actions analysis.
- Database technology detection.
- Monorepo identification.
- Repository architecture visualization.
- Repository health reports.
- AI-powered repository summaries.
- Web-based interface.
git clone https://github.com/<your-username>/repo-engine.git
cd repo-enginepython -m venv .venvActivate it:
Windows
.venv\Scripts\activatemacOS/Linux
source .venv/bin/activatepip install requestsor
pip install .Repo Engine currently runs as two separate local services:
Frontend → http://127.0.0.1:3000
API → http://127.0.0.1:8000
Both services must be running to use the web interface.
From the project root:
python -m api.serverThe API will run at:
http://127.0.0.1:8000
Verify it:
curl http://127.0.0.1:8000/Expected response:
{
"message": "Repo Engine API"
}Open another terminal and enter the frontend directory:
cd frontendStart the local web server:
python -m http.server 3000Then open:
http://127.0.0.1:3000
in your browser. If port 3000 is already in use, use another port.
You can test repository analysis directly with:
curl -X POST http://127.0.0.1:8000/api/tree \
-H "Content-Type: application/json" \
-d '{"url":"https://github.com/Facelessism/repo-engine"}'Once both servers are running, enter a public GitHub repository URL in the Repo Engine web interface and click Analyze Repository.
Run the application by providing a GitHub repository URL.
python main.py https://github.com/vercel/next.jsInput
https://github.com/vercel/next.js
Expected Output
next.js/
├── packages/
├── docs/
├── examples/
├── test/
├── package.json
├── README.md
└── turbo.json
Repo Engine communicates directly with the GitHub REST API to retrieve repository metadata and file structure.
Instead of cloning the repository, it requests the repository's recursive Git tree, reconstructs the directory hierarchy in memory, and renders it as a readable project tree.
This approach significantly reduces bandwidth usage and improves performance compared to downloading the entire repository.
GET /repos/{owner}/{repo}
Used to retrieve:
- Repository name
- Default branch
- General repository metadata
GET /repos/{owner}/{repo}/git/trees/{tree_sha}?recursive=1
Used to retrieve the complete recursive file tree for the repository.
- Currently supports public GitHub repositories only.
- GitHub API rate limits apply to unauthenticated requests.
- Symbolic links and Git submodules are treated as regular tree entries.
- Repository contents are not analyzed in the current version; only the directory structure is processed.
- Private repositories are not yet supported.
Contributions are welcome.
If you would like to contribute:
- Fork the repository.
- Create a feature branch.
- Commit your changes.
- Push the branch.
- Open a Pull Request.
Please ensure that new features include appropriate documentation and tests where applicable.
This project is licensed under the MIT License.
For questions, suggestions, bug reports or feature requests, please open an issue in the project's repository.