# ujjwalagrawal3950/git-tree-maker architecture

> Architecture diagram of the GitHub repository ujjwalagrawal3950/git-tree-maker, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-14). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/ujjwalagrawal3950/git-tree-maker
- Repository: https://github.com/ujjwalagrawal3950/git-tree-maker

## Overview

Git-Tree-Maker is a repository dependency-graph explorer. A signed-in user supplies a GitHub repository; the frontend verifies it, loads or builds a revision-scoped graph, then presents dependency maps, node details, provenance, and unresolved references. Backend parsing and language-specific resolution feed graph construction and snapshot queries. The README contains no capability detail, so the broader product scope is taken from the route surface and source index; unsampled subsystem links are omitted where their callers are not evidenced.

Main entry points: [`Frontend/src/App.jsx`](https://github.com/ujjwalagrawal3950/git-tree-maker/blob/main/Frontend/src/App.jsx) (Explorer App), [`Backend/controllers/graphController.js`](https://github.com/ujjwalagrawal3950/git-tree-maker/blob/main/Backend/controllers/graphController.js) (Graph Controller), [`Backend/services/graph/graphPipeline.js`](https://github.com/ujjwalagrawal3950/git-tree-maker/blob/main/Backend/services/graph/graphPipeline.js) (Graph Pipeline), [`Backend/services/github.js`](https://github.com/ujjwalagrawal3950/git-tree-maker/blob/main/Backend/services/github.js) (GitHub Service)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_frontend["Graph Explorer"]
  node_app["Explorer App<br/>[App.jsx]"]
  node_api_client["API Client<br/>[api.js]"]
  node_graph_transform["Graph Transformer"]
  node_dependency_map["Dependency Map<br/>[DependencyMap.jsx]"]
  node_detail_panel["Node Details<br/>[DetailPanel.jsx]"]
  node_provenance["Provenance Panel"]
  node_unresolved_panel["Unresolved References"]
end

subgraph group_api["Backend API"]
  node_graph_routes["Graph Routes<br/>[graphRoutes.js]"]
  node_graph_controller["Graph Controller<br/>[graphController.js]"]
  node_repository_controller["Repository Controller"]
  node_github_service["GitHub Service<br/>[github.js]"]
  node_source_retrieval["Source Retrieval<br/>[sourceRetrieval.js]"]
end

subgraph group_parse["Parsing and Resolution"]
  node_parser_entry["Parser Entry<br/>[index.js]"]
  node_parser_adapters["Language Adapters"]
  node_resolvers["Import Resolvers"]
end

subgraph group_graph["Graph Services"]
  node_graph_pipeline["Graph Pipeline<br/>[graphPipeline.js]"]
  node_graph_builder["Graph Builder<br/>[GraphBuilder.js]"]
  node_evidence_normalizer["Evidence Normalizer"]
  node_snapshot_store[("Snapshot Store")]
  node_query_service["Graph Query Service"]
end

subgraph group_identity["Identity and Tenancy"]
  node_auth["Session Authentication<br/>[auth.js]"]
  node_organizations["Organization Service<br/>[organizations.js]"]
end

node_user(("Repository Explorer"))
node_database[("Supabase")]
node_github["GitHub"]

node_user -->|"explores repositories"| node_app
node_app -->|"requests data"| node_api_client
node_app -->|"transforms graph"| node_graph_transform
node_app -->|"renders graph"| node_dependency_map
node_app -->|"shows details"| node_detail_panel
node_app -->|"shows provenance"| node_provenance
node_app -->|"shows unresolved"| node_unresolved_panel
node_dependency_map -->|"uses elements"| node_graph_transform
node_api_client -.->|"calls API"| node_graph_routes
node_graph_routes -->|"requires session"| node_auth
node_graph_routes -->|"routes requests"| node_graph_controller
node_graph_controller -->|"builds graph"| node_graph_pipeline
node_graph_controller -->|"queries snapshots"| node_snapshot_store
node_graph_controller -->|"discovers manifest"| node_github_service
node_graph_controller -->|"retrieves sources"| node_source_retrieval
node_repository_controller -->|"verifies repository"| node_github_service
node_repository_controller -->|"retrieves sources"| node_source_retrieval
node_github_service -.->|"fetches repository data"| node_github
node_source_retrieval -->|"retrieves source"| node_github_service
node_parser_entry -->|"registers adapters"| node_parser_adapters
node_parser_entry -->|"registers resolvers"| node_resolvers
node_graph_pipeline -->|"resolves imports"| node_resolvers
node_graph_pipeline -->|"normalizes evidence"| node_evidence_normalizer
node_graph_pipeline -->|"builds snapshot"| node_graph_builder
node_graph_pipeline -->|"stores snapshot"| node_snapshot_store
node_snapshot_store -->|"creates query service"| node_query_service
node_auth -.->|"checks tenant access"| node_organizations
node_organizations -->|"persists organization data"| node_database

click node_app "https://github.com/ujjwalagrawal3950/git-tree-maker/blob/main/Frontend/src/App.jsx"
click node_api_client "https://github.com/ujjwalagrawal3950/git-tree-maker/blob/main/Frontend/src/lib/api.js"
click node_graph_transform "https://github.com/ujjwalagrawal3950/git-tree-maker/blob/main/Frontend/src/lib/graphTransformer.js"
click node_dependency_map "https://github.com/ujjwalagrawal3950/git-tree-maker/blob/main/Frontend/src/components/map/DependencyMap.jsx"
click node_detail_panel "https://github.com/ujjwalagrawal3950/git-tree-maker/blob/main/Frontend/src/components/DetailPanel.jsx"
click node_provenance "https://github.com/ujjwalagrawal3950/git-tree-maker/blob/main/Frontend/src/components/ProvenancePanel.jsx"
click node_unresolved_panel "https://github.com/ujjwalagrawal3950/git-tree-maker/blob/main/Frontend/src/components/UnresolvedReferencesPanel.jsx"
click node_graph_routes "https://github.com/ujjwalagrawal3950/git-tree-maker/blob/main/Backend/routes/graphRoutes.js"
click node_graph_controller "https://github.com/ujjwalagrawal3950/git-tree-maker/blob/main/Backend/controllers/graphController.js"
click node_repository_controller "https://github.com/ujjwalagrawal3950/git-tree-maker/blob/main/Backend/controllers/repositoryController.js"
click node_github_service "https://github.com/ujjwalagrawal3950/git-tree-maker/blob/main/Backend/services/github.js"
click node_source_retrieval "https://github.com/ujjwalagrawal3950/git-tree-maker/blob/main/Backend/services/sourceRetrieval.js"
click node_parser_entry "https://github.com/ujjwalagrawal3950/git-tree-maker/blob/main/Backend/services/parser/index.js"
click node_parser_adapters "https://github.com/ujjwalagrawal3950/git-tree-maker/tree/main/Backend/services/parser/adapters"
click node_resolvers "https://github.com/ujjwalagrawal3950/git-tree-maker/tree/main/Backend/services/parser/resolvers"
click node_graph_pipeline "https://github.com/ujjwalagrawal3950/git-tree-maker/blob/main/Backend/services/graph/graphPipeline.js"
click node_graph_builder "https://github.com/ujjwalagrawal3950/git-tree-maker/blob/main/Backend/services/graph/GraphBuilder.js"
click node_evidence_normalizer "https://github.com/ujjwalagrawal3950/git-tree-maker/blob/main/Backend/services/graph/evidenceNormalizer.js"
click node_snapshot_store "https://github.com/ujjwalagrawal3950/git-tree-maker/blob/main/Backend/services/graph/GraphSnapshotStore.js"
click node_query_service "https://github.com/ujjwalagrawal3950/git-tree-maker/blob/main/Backend/services/graph/GraphQueryService.js"
click node_auth "https://github.com/ujjwalagrawal3950/git-tree-maker/blob/main/Backend/middleware/auth.js"
click node_organizations "https://github.com/ujjwalagrawal3950/git-tree-maker/blob/main/Backend/services/organizations.js"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_app,node_api_client,node_graph_transform,node_dependency_map,node_detail_panel,node_provenance,node_unresolved_panel toneBlue
class node_graph_routes,node_graph_controller,node_repository_controller,node_github_service,node_source_retrieval,node_database toneAmber
class node_parser_entry,node_parser_adapters,node_resolvers toneMint
class node_graph_pipeline,node_graph_builder,node_evidence_normalizer,node_snapshot_store,node_query_service toneRose
class node_auth,node_organizations,node_user,node_github toneIndigo
```

## Components

### Graph Explorer

- [Explorer App](https://github.com/ujjwalagrawal3950/git-tree-maker/blob/main/Frontend/src/App.jsx): `Frontend/src/App.jsx`
- [API Client](https://github.com/ujjwalagrawal3950/git-tree-maker/blob/main/Frontend/src/lib/api.js): `Frontend/src/lib/api.js`
- [Graph Transformer](https://github.com/ujjwalagrawal3950/git-tree-maker/blob/main/Frontend/src/lib/graphTransformer.js): `Frontend/src/lib/graphTransformer.js`
- [Dependency Map](https://github.com/ujjwalagrawal3950/git-tree-maker/blob/main/Frontend/src/components/map/DependencyMap.jsx): `Frontend/src/components/map/DependencyMap.jsx`
- [Node Details](https://github.com/ujjwalagrawal3950/git-tree-maker/blob/main/Frontend/src/components/DetailPanel.jsx): `Frontend/src/components/DetailPanel.jsx`
- [Provenance Panel](https://github.com/ujjwalagrawal3950/git-tree-maker/blob/main/Frontend/src/components/ProvenancePanel.jsx): `Frontend/src/components/ProvenancePanel.jsx`
- [Unresolved References](https://github.com/ujjwalagrawal3950/git-tree-maker/blob/main/Frontend/src/components/UnresolvedReferencesPanel.jsx): `Frontend/src/components/UnresolvedReferencesPanel.jsx`

### Backend API

- [Graph Routes](https://github.com/ujjwalagrawal3950/git-tree-maker/blob/main/Backend/routes/graphRoutes.js): `Backend/routes/graphRoutes.js`
- [Graph Controller](https://github.com/ujjwalagrawal3950/git-tree-maker/blob/main/Backend/controllers/graphController.js): `Backend/controllers/graphController.js`
- [Repository Controller](https://github.com/ujjwalagrawal3950/git-tree-maker/blob/main/Backend/controllers/repositoryController.js): `Backend/controllers/repositoryController.js`
- [GitHub Service](https://github.com/ujjwalagrawal3950/git-tree-maker/blob/main/Backend/services/github.js): `Backend/services/github.js`
- [Source Retrieval](https://github.com/ujjwalagrawal3950/git-tree-maker/blob/main/Backend/services/sourceRetrieval.js): `Backend/services/sourceRetrieval.js`

### Parsing and Resolution

- [Parser Entry](https://github.com/ujjwalagrawal3950/git-tree-maker/blob/main/Backend/services/parser/index.js): `Backend/services/parser/index.js`
- [Language Adapters](https://github.com/ujjwalagrawal3950/git-tree-maker/tree/main/Backend/services/parser/adapters): `Backend/services/parser/adapters`
- [Import Resolvers](https://github.com/ujjwalagrawal3950/git-tree-maker/tree/main/Backend/services/parser/resolvers): `Backend/services/parser/resolvers`

### Graph Services

- [Graph Pipeline](https://github.com/ujjwalagrawal3950/git-tree-maker/blob/main/Backend/services/graph/graphPipeline.js): `Backend/services/graph/graphPipeline.js`
- [Graph Builder](https://github.com/ujjwalagrawal3950/git-tree-maker/blob/main/Backend/services/graph/GraphBuilder.js): `Backend/services/graph/GraphBuilder.js`
- [Evidence Normalizer](https://github.com/ujjwalagrawal3950/git-tree-maker/blob/main/Backend/services/graph/evidenceNormalizer.js): `Backend/services/graph/evidenceNormalizer.js`
- [Snapshot Store](https://github.com/ujjwalagrawal3950/git-tree-maker/blob/main/Backend/services/graph/GraphSnapshotStore.js): `Backend/services/graph/GraphSnapshotStore.js`
- [Graph Query Service](https://github.com/ujjwalagrawal3950/git-tree-maker/blob/main/Backend/services/graph/GraphQueryService.js): `Backend/services/graph/GraphQueryService.js`

### Identity and Tenancy

- [Session Authentication](https://github.com/ujjwalagrawal3950/git-tree-maker/blob/main/Backend/middleware/auth.js): `Backend/middleware/auth.js`
- [Organization Service](https://github.com/ujjwalagrawal3950/git-tree-maker/blob/main/Backend/services/organizations.js): `Backend/services/organizations.js`

### Other components

- **Repository Explorer**
- **Supabase**
- **GitHub**

## Connections

- Repository Explorer → Explorer App: explores repositories (evidence: `Frontend/src/App.jsx`)
- Explorer App → API Client: requests data (evidence: `Frontend/src/App.jsx`)
- Explorer App → Graph Transformer: transforms graph (evidence: `Frontend/src/App.jsx`)
- Explorer App → Dependency Map: renders graph (evidence: `Frontend/src/App.jsx`)
- Explorer App → Node Details: shows details (evidence: `Frontend/src/App.jsx`)
- Explorer App → Provenance Panel: shows provenance (evidence: `Frontend/src/App.jsx`)
- Explorer App → Unresolved References: shows unresolved (evidence: `Frontend/src/App.jsx`)
- Dependency Map → Graph Transformer: uses elements (evidence: `Frontend/src/components/map/DependencyMap.jsx`)
- API Client → Graph Routes: calls API
- Graph Routes → Session Authentication: requires session (evidence: `Backend/routes/graphRoutes.js`)
- Graph Routes → Graph Controller: routes requests (evidence: `Backend/routes/graphRoutes.js`)
- Graph Controller → Graph Pipeline: builds graph (evidence: `Backend/controllers/graphController.js`)
- Graph Controller → Snapshot Store: queries snapshots (evidence: `Backend/controllers/graphController.js`)
- Graph Controller → GitHub Service: discovers manifest (evidence: `Backend/controllers/graphController.js`)
- Graph Controller → Source Retrieval: retrieves sources (evidence: `Backend/controllers/graphController.js`)
- Repository Controller → GitHub Service: verifies repository (evidence: `Backend/controllers/repositoryController.js`)
- Repository Controller → Source Retrieval: retrieves sources (evidence: `Backend/controllers/repositoryController.js`)
- GitHub Service → GitHub: fetches repository data
- Source Retrieval → GitHub Service: retrieves source (evidence: `Backend/services/sourceRetrieval.js`)
- Parser Entry → Language Adapters: registers adapters (evidence: `Backend/services/parser/index.js`)
- Parser Entry → Import Resolvers: registers resolvers (evidence: `Backend/services/parser/index.js`)
- Graph Pipeline → Import Resolvers: resolves imports (evidence: `Backend/services/graph/graphPipeline.js`)
- Graph Pipeline → Evidence Normalizer: normalizes evidence (evidence: `Backend/services/graph/graphPipeline.js`)
- Graph Pipeline → Graph Builder: builds snapshot (evidence: `Backend/services/graph/graphPipeline.js`)
- Graph Pipeline → Snapshot Store: stores snapshot (evidence: `Backend/services/graph/graphPipeline.js`)
- Snapshot Store → Graph Query Service: creates query service (evidence: `Backend/services/graph/GraphSnapshotStore.js`)
- Session Authentication → Organization Service: checks tenant access
- Organization Service → Supabase: persists organization data (evidence: `Backend/services/organizations.js`)
