CodeAtlas is a comprehensive tool designed to visualize and explore the architecture of your codebase. By turning flat file structures into interactive dependency graphs, it helps developers understand complex projects faster.
Navigating large codebases can be overwhelming. CodeAtlas parses your repository, understands the relationships between files (imports, classes, functions), and presents them in an interactive graph. Whether you are onboarding new developers or refactoring legacy code, CodeAtlas gives you the map you need.
CodeAtlas is built as a microservices architecture:
- Frontend: A Next.js application that provides the dashboard and graph visualization.
- GitAuth Service: Manages specific GitHub authentication, user sessions, and triggers the initial repository sync.
- Repo Parser Service: The heavy lifter that consumes file events, parses code to generate ASTs (Abstract Syntax Trees), and builds the relationship graph.
- User Selects Repo: The user picks a repository in the Frontend.
- Sync Trigger: Frontend calls GitAuth, which fetches the file tree from GitHub and pushes events to Kafka.
- Processing: Repo Parser consumes these events, fetches raw code, and generates ASTs.
- Graph Generation: The parsed data is structured into nodes and edges (saved to databases like Neo4j/MySQL) and returned to the Frontend for rendering.
CodeAtlas-
├── frontend/ # Next.js User Interface
├── git_auth/ # Authentication & Sync Orchestrator
├── repo_parser/ # AST Parsing & Analysis Engine
├── uml_diagrams/ # Architecture diagrams (PlantUML)
└── README.md # This file
Each service is independently managed. Please refer to their respective READMEs for detailed setup:
- Start your infrastructure (Kafka, MySQL, Redis, Mongo).
- Start the GitAuth service (Port 3000/Default).
- Start the Repo Parser service (Port 5001).
- Start the Frontend (Port 3001).
- Navigate to
http://localhost:3001and login with GitHub.
We welcome contributions to CodeAtlas! Whether it's reporting a bug, suggesting a feature, or writing code, your help is appreciated.
If you find a bug or have a feature request, please check the existing issues first to see if it has already been reported.
If not, please open a new issue using one of our templates:
- Bug Report: For reporting errors or unexpected behavior.
- Feature Request: For proposing new features or improvements.
Please check the individual service directories for specific setup and contribution guidelines:
Follow our journey and read detailed documentation in our Document Week Blog: