# whereevenami/ezapplication architecture

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

- Interactive diagram: https://gitdiagram.com/whereevenami/ezapplication
- Repository: https://github.com/whereevenami/ezapplication

## Overview

EzApplication turns a natural-language request into a generated multi-file project. Users can start generation through the CLI or the FastAPI endpoint; the LangGraph workflow plans the app, expands that plan into file-level tasks, then iteratively has a coding agent edit files. The API also exposes job progress and generated-file contents. The README describes the product broadly; sampled code shows the workflow and file tools, but no frontend or additional validation stage, so neither is represented.

Main entry points: [`agent/graph.py`](https://github.com/whereevenami/ezapplication/blob/main/agent/graph.py) (LangGraph workflow), [`api.py`](https://github.com/whereevenami/ezapplication/blob/main/api.py) (HTTP API), [`main.py`](https://github.com/whereevenami/ezapplication/blob/main/main.py) (CLI runner), [`agent/tools.py`](https://github.com/whereevenami/ezapplication/blob/main/agent/tools.py) (File tools)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["User entrypoints"]
  node_cli["CLI runner<br/>[main.py]"]
  node_api["HTTP API<br/>[api.py]"]
end

subgraph group_workflow["Planning workflow"]
  node_agent["LangGraph workflow<br/>[graph.py]"]
  node_prompts["Agent prompts<br/>[prompts.py]"]
  node_schemas["Plan and state schemas<br/>[states.py]"]
end

subgraph group_coding["Code generation"]
  node_coder["Coding agent<br/>[graph.py]"]
  node_tools["File tools<br/>[tools.py]"]
end

subgraph group_output["Generated project"]
  node_project[("Generated files")]
end

node_user(("User"))
node_groq["Groq model"]

node_user -->|"enters prompt"| node_cli
node_user -->|"submits request"| node_api
node_cli -->|"invokes workflow"| node_agent
node_api -->|"streams workflow"| node_agent
node_agent -->|"builds prompts"| node_prompts
node_agent -->|"uses schemas"| node_schemas
node_agent -->|"calls model"| node_groq
node_agent -->|"dispatches tasks"| node_coder
node_coder -->|"registers and invokes"| node_tools
node_tools -->|"reads and writes"| node_project
node_api -->|"lists and reads"| node_project

click node_cli "https://github.com/whereevenami/ezapplication/blob/main/main.py"
click node_api "https://github.com/whereevenami/ezapplication/blob/main/api.py"
click node_agent "https://github.com/whereevenami/ezapplication/blob/main/agent/graph.py"
click node_prompts "https://github.com/whereevenami/ezapplication/blob/main/agent/prompts.py"
click node_schemas "https://github.com/whereevenami/ezapplication/blob/main/agent/states.py"
click node_coder "https://github.com/whereevenami/ezapplication/blob/main/agent/graph.py"
click node_tools "https://github.com/whereevenami/ezapplication/blob/main/agent/tools.py"

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_cli,node_api,node_user toneBlue
class node_agent,node_prompts,node_schemas toneAmber
class node_coder,node_tools toneMint
class node_project toneRose
class node_groq toneIndigo
```

## Components

### User entrypoints

- [CLI runner](https://github.com/whereevenami/ezapplication/blob/main/main.py): `main.py`
- [HTTP API](https://github.com/whereevenami/ezapplication/blob/main/api.py): `api.py`

### Planning workflow

- [LangGraph workflow](https://github.com/whereevenami/ezapplication/blob/main/agent/graph.py): `agent/graph.py`
- [Agent prompts](https://github.com/whereevenami/ezapplication/blob/main/agent/prompts.py): `agent/prompts.py`
- [Plan and state schemas](https://github.com/whereevenami/ezapplication/blob/main/agent/states.py): `agent/states.py`

### Code generation

- [Coding agent](https://github.com/whereevenami/ezapplication/blob/main/agent/graph.py): `agent/graph.py`
- [File tools](https://github.com/whereevenami/ezapplication/blob/main/agent/tools.py): `agent/tools.py`

### Generated project

- **Generated files**

### Other components

- **User**
- **Groq model**

## Connections

- User → CLI runner: enters prompt (evidence: `main.py`)
- User → HTTP API: submits request (evidence: `api.py`)
- CLI runner → LangGraph workflow: invokes workflow (evidence: `main.py`)
- HTTP API → LangGraph workflow: streams workflow (evidence: `api.py`)
- LangGraph workflow → Agent prompts: builds prompts (evidence: `agent/graph.py`)
- LangGraph workflow → Plan and state schemas: uses schemas (evidence: `agent/graph.py`)
- LangGraph workflow → Groq model: calls model (evidence: `agent/graph.py`)
- LangGraph workflow → Coding agent: dispatches tasks (evidence: `agent/graph.py`)
- Coding agent → File tools: registers and invokes (evidence: `agent/graph.py`)
- File tools → Generated files: reads and writes (evidence: `agent/tools.py`)
- HTTP API → Generated files: lists and reads (evidence: `api.py`)
