# alikable/alikable-crew architecture

> Architecture diagram of the GitHub repository alikable/alikable-crew, 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/alikable/alikable-crew
- Repository: https://github.com/alikable/alikable-crew

## Overview

Alikable is a local, AI-assisted website builder. Users create a project, complete guided intake and approve a site spec, then review a generated design, build and iterate through chat, and inspect the site and release guide. The app coordinates UI screens and project sessions; project files persist state and site artifacts. The graph preserves documented planning, design, implementation, polish, validation, deployment-guide and rollback capabilities. Some flow wiring is unsampled, so those documented links are marked with their flow source as evidence rather than implying code inspection beyond the excerpts.

Main entry points: [`alikable/src/alikable/app.py`](https://github.com/alikable/alikable-crew/blob/main/alikable/src/alikable/app.py) (Gradio app), [`alikable/src/alikable/flows/change_router.py`](https://github.com/alikable/alikable-crew/blob/main/alikable/src/alikable/flows/change_router.py) (Change router), [`alikable/src/alikable/flows/project.py`](https://github.com/alikable/alikable-crew/blob/main/alikable/src/alikable/flows/project.py) (Project session), [`alikable/src/alikable/projects.py`](https://github.com/alikable/alikable-crew/blob/main/alikable/src/alikable/projects.py) (Project files)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_experience["User experience"]
  node_app["Gradio app<br/>[app.py]"]
  node_intake_ui["Intake screen<br/>[intake.py]"]
  node_design_ui["Design screen<br/>[design.py]"]
  node_build_ui["Build screen<br/>[build.py]"]
  node_chat_ui["Chat screen<br/>[chat.py]"]
  node_preview_ui["Site preview<br/>[preview.py]"]
  node_deploy_ui["Deploy screen<br/>[deploy.py]"]
  node_projects_ui["Project picker<br/>[projects.py]"]
end

subgraph group_workflow["Project workflow"]
  node_project_flow["Project session<br/>[project.py]"]
  node_intake_flow["Intake and planning<br/>[intake.py]"]
  node_change_router["Change router<br/>[change_router.py]"]
  node_phase_runner["Design and implementation<br/>[phases.py]"]
  node_deploy_guide["Deploy guide flow"]
  node_jobs["Background jobs<br/>[jobs.py]"]
end

subgraph group_generation["AI generation and QA"]
  node_crew["AI crews<br/>[crew.py]"]
  node_polish["Polish and QA<br/>[polish.py]"]
  node_build_checker["Build checker<br/>[build_checker.py]"]
  node_release_builder["Release packaging<br/>[release_builder.py]"]
end

subgraph group_persistence["Project state and files"]
  node_project_store[("Project files<br/>[projects.py]")]
  node_site_files["Site files and rollback<br/>[site_files.py]"]
  node_models["Workflow models<br/>[models.py]"]
end

node_user(("Website builder"))
node_browser(("Local browser"))

node_user -->|"uses"| node_app
node_app -->|"renders"| node_projects_ui
node_app -->|"renders"| node_intake_ui
node_app -->|"renders"| node_design_ui
node_app -->|"renders"| node_build_ui
node_app -->|"renders"| node_chat_ui
node_app -->|"renders"| node_preview_ui
node_app -->|"renders"| node_deploy_ui
node_intake_ui -->|"submits intake"| node_project_flow
node_build_ui -->|"requests build"| node_project_flow
node_chat_ui -->|"sends messages"| node_project_flow
node_project_flow -->|"runs intake"| node_intake_flow
node_project_flow -->|"starts session"| node_change_router
node_project_flow -->|"loads project"| node_project_store
node_intake_flow -->|"runs interview"| node_crew
node_intake_flow -->|"saves approved spec"| node_project_store
node_intake_flow -->|"updates state"| node_models
node_change_router -->|"starts jobs"| node_jobs
node_change_router -->|"runs phases"| node_phase_runner
node_change_router -->|"routes polish"| node_polish
node_change_router -->|"starts guide"| node_deploy_guide
node_change_router -->|"uses state"| node_models
node_phase_runner -->|"runs crews"| node_crew
node_phase_runner -->|"writes site"| node_site_files
node_polish -->|"runs QA crews"| node_crew
node_polish -->|"checks site"| node_build_checker
node_deploy_guide -->|"runs guide crew"| node_crew
node_deploy_guide -->|"validates site"| node_build_checker
node_deploy_guide -->|"packages release"| node_release_builder
node_crew -->|"provides tool"| node_build_checker
node_release_builder -->|"runs checks"| node_build_checker
node_site_files -->|"writes project files"| node_project_store
node_preview_ui -->|"reads site pages"| node_project_store
node_preview_ui -->|"opens page"| node_browser
node_projects_ui -->|"lists projects"| node_project_store
node_deploy_ui -->|"reads release files"| node_project_store

click node_app "https://github.com/alikable/alikable-crew/blob/main/alikable/src/alikable/app.py"
click node_intake_ui "https://github.com/alikable/alikable-crew/blob/main/alikable/src/alikable/ui/intake.py"
click node_design_ui "https://github.com/alikable/alikable-crew/blob/main/alikable/src/alikable/ui/design.py"
click node_build_ui "https://github.com/alikable/alikable-crew/blob/main/alikable/src/alikable/ui/build.py"
click node_chat_ui "https://github.com/alikable/alikable-crew/blob/main/alikable/src/alikable/ui/chat.py"
click node_preview_ui "https://github.com/alikable/alikable-crew/blob/main/alikable/src/alikable/ui/preview.py"
click node_deploy_ui "https://github.com/alikable/alikable-crew/blob/main/alikable/src/alikable/ui/deploy.py"
click node_projects_ui "https://github.com/alikable/alikable-crew/blob/main/alikable/src/alikable/ui/projects.py"
click node_project_flow "https://github.com/alikable/alikable-crew/blob/main/alikable/src/alikable/flows/project.py"
click node_intake_flow "https://github.com/alikable/alikable-crew/blob/main/alikable/src/alikable/flows/intake.py"
click node_change_router "https://github.com/alikable/alikable-crew/blob/main/alikable/src/alikable/flows/change_router.py"
click node_phase_runner "https://github.com/alikable/alikable-crew/blob/main/alikable/src/alikable/flows/phases.py"
click node_deploy_guide "https://github.com/alikable/alikable-crew/blob/main/alikable/src/alikable/flows/create_deploy_guide.py"
click node_jobs "https://github.com/alikable/alikable-crew/blob/main/alikable/src/alikable/flows/jobs.py"
click node_crew "https://github.com/alikable/alikable-crew/blob/main/alikable/src/alikable/crew.py"
click node_polish "https://github.com/alikable/alikable-crew/blob/main/alikable/src/alikable/flows/polish.py"
click node_build_checker "https://github.com/alikable/alikable-crew/blob/main/alikable/src/alikable/tools/build_checker.py"
click node_release_builder "https://github.com/alikable/alikable-crew/blob/main/alikable/src/alikable/tools/release_builder.py"
click node_project_store "https://github.com/alikable/alikable-crew/blob/main/alikable/src/alikable/projects.py"
click node_site_files "https://github.com/alikable/alikable-crew/blob/main/alikable/src/alikable/site_files.py"
click node_models "https://github.com/alikable/alikable-crew/blob/main/alikable/src/alikable/models.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_app,node_intake_ui,node_design_ui,node_build_ui,node_chat_ui,node_preview_ui,node_deploy_ui,node_projects_ui,node_browser toneBlue
class node_project_flow,node_intake_flow,node_change_router,node_phase_runner,node_deploy_guide,node_jobs toneAmber
class node_crew,node_polish,node_build_checker,node_release_builder toneMint
class node_project_store,node_site_files,node_models toneRose
class node_user toneIndigo
```

## Components

### User experience

- [Gradio app](https://github.com/alikable/alikable-crew/blob/main/alikable/src/alikable/app.py): `alikable/src/alikable/app.py`
- [Intake screen](https://github.com/alikable/alikable-crew/blob/main/alikable/src/alikable/ui/intake.py): `alikable/src/alikable/ui/intake.py`
- [Design screen](https://github.com/alikable/alikable-crew/blob/main/alikable/src/alikable/ui/design.py): `alikable/src/alikable/ui/design.py`
- [Build screen](https://github.com/alikable/alikable-crew/blob/main/alikable/src/alikable/ui/build.py): `alikable/src/alikable/ui/build.py`
- [Chat screen](https://github.com/alikable/alikable-crew/blob/main/alikable/src/alikable/ui/chat.py): `alikable/src/alikable/ui/chat.py`
- [Site preview](https://github.com/alikable/alikable-crew/blob/main/alikable/src/alikable/ui/preview.py): `alikable/src/alikable/ui/preview.py`
- [Deploy screen](https://github.com/alikable/alikable-crew/blob/main/alikable/src/alikable/ui/deploy.py): `alikable/src/alikable/ui/deploy.py`
- [Project picker](https://github.com/alikable/alikable-crew/blob/main/alikable/src/alikable/ui/projects.py): `alikable/src/alikable/ui/projects.py`

### Project workflow

- [Project session](https://github.com/alikable/alikable-crew/blob/main/alikable/src/alikable/flows/project.py): `alikable/src/alikable/flows/project.py`
- [Intake and planning](https://github.com/alikable/alikable-crew/blob/main/alikable/src/alikable/flows/intake.py): `alikable/src/alikable/flows/intake.py`
- [Change router](https://github.com/alikable/alikable-crew/blob/main/alikable/src/alikable/flows/change_router.py): `alikable/src/alikable/flows/change_router.py`
- [Design and implementation](https://github.com/alikable/alikable-crew/blob/main/alikable/src/alikable/flows/phases.py): `alikable/src/alikable/flows/phases.py`
- [Deploy guide flow](https://github.com/alikable/alikable-crew/blob/main/alikable/src/alikable/flows/create_deploy_guide.py): `alikable/src/alikable/flows/create_deploy_guide.py`
- [Background jobs](https://github.com/alikable/alikable-crew/blob/main/alikable/src/alikable/flows/jobs.py): `alikable/src/alikable/flows/jobs.py`

### AI generation and QA

- [AI crews](https://github.com/alikable/alikable-crew/blob/main/alikable/src/alikable/crew.py): `alikable/src/alikable/crew.py`
- [Polish and QA](https://github.com/alikable/alikable-crew/blob/main/alikable/src/alikable/flows/polish.py): `alikable/src/alikable/flows/polish.py`
- [Build checker](https://github.com/alikable/alikable-crew/blob/main/alikable/src/alikable/tools/build_checker.py): `alikable/src/alikable/tools/build_checker.py`
- [Release packaging](https://github.com/alikable/alikable-crew/blob/main/alikable/src/alikable/tools/release_builder.py): `alikable/src/alikable/tools/release_builder.py`

### Project state and files

- [Project files](https://github.com/alikable/alikable-crew/blob/main/alikable/src/alikable/projects.py): `alikable/src/alikable/projects.py`
- [Site files and rollback](https://github.com/alikable/alikable-crew/blob/main/alikable/src/alikable/site_files.py): `alikable/src/alikable/site_files.py`
- [Workflow models](https://github.com/alikable/alikable-crew/blob/main/alikable/src/alikable/models.py): `alikable/src/alikable/models.py`

### Other components

- **Website builder**
- **Local browser**

## Connections

- Website builder → Gradio app: uses (evidence: `alikable/src/alikable/app.py`)
- Gradio app → Project picker: renders (evidence: `alikable/src/alikable/app.py`)
- Gradio app → Intake screen: renders (evidence: `alikable/src/alikable/app.py`)
- Gradio app → Design screen: renders (evidence: `alikable/src/alikable/app.py`)
- Gradio app → Build screen: renders (evidence: `alikable/src/alikable/app.py`)
- Gradio app → Chat screen: renders (evidence: `alikable/src/alikable/app.py`)
- Gradio app → Site preview: renders (evidence: `alikable/src/alikable/app.py`)
- Gradio app → Deploy screen: renders (evidence: `alikable/src/alikable/app.py`)
- Intake screen → Project session: submits intake (evidence: `alikable/src/alikable/ui/intake.py`)
- Build screen → Project session: requests build (evidence: `alikable/src/alikable/ui/build.py`)
- Chat screen → Project session: sends messages (evidence: `alikable/src/alikable/ui/chat.py`)
- Project session → Intake and planning: runs intake (evidence: `alikable/src/alikable/flows/project.py`)
- Project session → Change router: starts session (evidence: `alikable/src/alikable/flows/project.py`)
- Project session → Project files: loads project (evidence: `alikable/src/alikable/flows/project.py`)
- Intake and planning → AI crews: runs interview (evidence: `alikable/src/alikable/flows/intake.py`)
- Intake and planning → Project files: saves approved spec (evidence: `alikable/src/alikable/flows/intake.py`)
- Intake and planning → Workflow models: updates state (evidence: `alikable/src/alikable/flows/intake.py`)
- Change router → Background jobs: starts jobs (evidence: `alikable/src/alikable/flows/change_router.py`)
- Change router → Design and implementation: runs phases (evidence: `alikable/src/alikable/flows/change_router.py`)
- Change router → Polish and QA: routes polish (evidence: `alikable/src/alikable/flows/change_router.py`)
- Change router → Deploy guide flow: starts guide (evidence: `alikable/src/alikable/flows/change_router.py`)
- Change router → Workflow models: uses state (evidence: `alikable/src/alikable/flows/change_router.py`)
- Design and implementation → AI crews: runs crews (evidence: `alikable/src/alikable/flows/phases.py`)
- Design and implementation → Site files and rollback: writes site (evidence: `alikable/src/alikable/flows/phases.py`)
- Polish and QA → AI crews: runs QA crews (evidence: `alikable/src/alikable/flows/polish.py`)
- Polish and QA → Build checker: checks site (evidence: `alikable/src/alikable/flows/polish.py`)
- Deploy guide flow → AI crews: runs guide crew (evidence: `alikable/src/alikable/flows/create_deploy_guide.py`)
- Deploy guide flow → Build checker: validates site (evidence: `alikable/src/alikable/flows/create_deploy_guide.py`)
- Deploy guide flow → Release packaging: packages release (evidence: `alikable/src/alikable/flows/create_deploy_guide.py`)
- AI crews → Build checker: provides tool (evidence: `alikable/src/alikable/crew.py`)
- Release packaging → Build checker: runs checks (evidence: `alikable/src/alikable/tools/release_builder.py`)
- Site files and rollback → Project files: writes project files (evidence: `alikable/src/alikable/site_files.py`)
- Site preview → Project files: reads site pages (evidence: `alikable/src/alikable/ui/preview.py`)
- Site preview → Local browser: opens page (evidence: `alikable/src/alikable/ui/preview.py`)
- Project picker → Project files: lists projects (evidence: `alikable/src/alikable/ui/projects.py`)
- Deploy screen → Project files: reads release files (evidence: `alikable/src/alikable/ui/deploy.py`)
