# arefin994/autoflow architecture

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

- Interactive diagram: https://gitdiagram.com/arefin994/autoflow
- Repository: https://github.com/arefin994/autoflow

## Overview

AutoFlow is an Android no-code workflow editor: users create or reopen a project, choose and configure a trigger and actions, arrange and connect them on a visual canvas, and save work for later editing. The README documents undo/redo, project identity, and restoration of workflow connections. Source excerpts contain only build configuration, so component wiring beyond these documented behaviors is limited to what the README supports; app integrations are presented as selectable apps, not proven execution services.

Main entry points: [`app/src/main/java/com/example/autoflow/NewProjectActivity.kt`](https://github.com/arefin994/autoflow/blob/main/app/src/main/java/com/example/autoflow/NewProjectActivity.kt) (New project), [`app/src/main/java/com/example/autoflow/HomeActivity.kt`](https://github.com/arefin994/autoflow/blob/main/app/src/main/java/com/example/autoflow/HomeActivity.kt) (Project list), [`app/src/main/java/com/example/autoflow/ExistingProjectActivity.kt`](https://github.com/arefin994/autoflow/blob/main/app/src/main/java/com/example/autoflow/ExistingProjectActivity.kt) (Existing project), [`app/src/main/java/com/example/autoflow/StartActivity.kt`](https://github.com/arefin994/autoflow/blob/main/app/src/main/java/com/example/autoflow/StartActivity.kt) (Start screen)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_navigation["Project navigation"]
  node_start["Start screen<br/>[StartActivity.kt]"]
  node_main["Main screen<br/>[MainActivity.kt]"]
  node_home["Project list<br/>[HomeActivity.kt]"]
end

subgraph group_builder["Workflow builder"]
  node_new_project["New project"]
  node_existing_project["Existing project"]
  node_app_catalog["App choices"]
  node_trigger["Trigger step"]
  node_trigger_config["Trigger config"]
  node_action["Action steps"]
  node_action_config["Action config"]
  node_canvas["Workflow canvas"]
  node_connections["Node connections"]
end

subgraph group_state["Project state"]
  node_history["Undo redo"]
  node_project_state["Project state"]
  node_local_storage[("Device storage")]
end

node_user(("User"))

node_user -->|"opens"| node_start
node_start -->|"continues"| node_main
node_main -->|"navigates"| node_home
node_user -->|"manages projects"| node_home
node_home -->|"creates"| node_new_project
node_home -->|"opens"| node_existing_project
node_user -->|"edits workflow"| node_new_project
node_new_project -->|"offers choices"| node_app_catalog
node_new_project -->|"configures"| node_trigger
node_new_project -->|"adds steps"| node_action
node_new_project -->|"arranges nodes"| node_canvas
node_new_project -->|"connects nodes"| node_connections
node_trigger -->|"sets options"| node_trigger_config
node_action -->|"sets options"| node_action_config
node_new_project -->|"tracks edits"| node_history
node_history -->|"undoes and redoes"| node_project_state
node_new_project -->|"updates"| node_project_state
node_existing_project -->|"loads project"| node_local_storage
node_local_storage -->|"returns saved state"| node_existing_project
node_existing_project -->|"restores workflow"| node_project_state
node_project_state -->|"saves JSON"| node_local_storage
node_home -->|"reads projects"| node_local_storage

click node_start "https://github.com/arefin994/autoflow/blob/main/app/src/main/java/com/example/autoflow/StartActivity.kt"
click node_main "https://github.com/arefin994/autoflow/blob/main/app/src/main/java/com/example/autoflow/MainActivity.kt"
click node_home "https://github.com/arefin994/autoflow/blob/main/app/src/main/java/com/example/autoflow/HomeActivity.kt"
click node_new_project "https://github.com/arefin994/autoflow/blob/main/app/src/main/java/com/example/autoflow/NewProjectActivity.kt"
click node_existing_project "https://github.com/arefin994/autoflow/blob/main/app/src/main/java/com/example/autoflow/ExistingProjectActivity.kt"
click node_app_catalog "https://github.com/arefin994/autoflow/blob/main/app/src/main/java/com/example/autoflow/NewProjectActivity.kt"
click node_trigger "https://github.com/arefin994/autoflow/blob/main/app/src/main/java/com/example/autoflow/NewProjectActivity.kt"
click node_trigger_config "https://github.com/arefin994/autoflow/blob/main/app/src/main/java/com/example/autoflow/NewProjectActivity.kt"
click node_action "https://github.com/arefin994/autoflow/blob/main/app/src/main/java/com/example/autoflow/NewProjectActivity.kt"
click node_action_config "https://github.com/arefin994/autoflow/blob/main/app/src/main/java/com/example/autoflow/NewProjectActivity.kt"
click node_canvas "https://github.com/arefin994/autoflow/blob/main/app/src/main/java/com/example/autoflow/NewProjectActivity.kt"
click node_connections "https://github.com/arefin994/autoflow/blob/main/app/src/main/java/com/example/autoflow/NewProjectActivity.kt"
click node_history "https://github.com/arefin994/autoflow/blob/main/app/src/main/java/com/example/autoflow/NewProjectActivity.kt"
click node_project_state "https://github.com/arefin994/autoflow/blob/main/app/src/main/java/com/example/autoflow/NewProjectActivity.kt"

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_start,node_main,node_home,node_user toneBlue
class node_new_project,node_existing_project,node_app_catalog,node_trigger,node_trigger_config,node_action,node_action_config,node_canvas,node_connections toneAmber
class node_history,node_project_state,node_local_storage toneMint
```

## Components

### Project navigation

- [Start screen](https://github.com/arefin994/autoflow/blob/main/app/src/main/java/com/example/autoflow/StartActivity.kt): `app/src/main/java/com/example/autoflow/StartActivity.kt`
- [Main screen](https://github.com/arefin994/autoflow/blob/main/app/src/main/java/com/example/autoflow/MainActivity.kt): `app/src/main/java/com/example/autoflow/MainActivity.kt`
- [Project list](https://github.com/arefin994/autoflow/blob/main/app/src/main/java/com/example/autoflow/HomeActivity.kt): `app/src/main/java/com/example/autoflow/HomeActivity.kt`

### Workflow builder

- [New project](https://github.com/arefin994/autoflow/blob/main/app/src/main/java/com/example/autoflow/NewProjectActivity.kt): `app/src/main/java/com/example/autoflow/NewProjectActivity.kt`
- [Existing project](https://github.com/arefin994/autoflow/blob/main/app/src/main/java/com/example/autoflow/ExistingProjectActivity.kt): `app/src/main/java/com/example/autoflow/ExistingProjectActivity.kt`
- [App choices](https://github.com/arefin994/autoflow/blob/main/app/src/main/java/com/example/autoflow/NewProjectActivity.kt): `app/src/main/java/com/example/autoflow/NewProjectActivity.kt`
- [Trigger step](https://github.com/arefin994/autoflow/blob/main/app/src/main/java/com/example/autoflow/NewProjectActivity.kt): `app/src/main/java/com/example/autoflow/NewProjectActivity.kt`
- [Trigger config](https://github.com/arefin994/autoflow/blob/main/app/src/main/java/com/example/autoflow/NewProjectActivity.kt): `app/src/main/java/com/example/autoflow/NewProjectActivity.kt`
- [Action steps](https://github.com/arefin994/autoflow/blob/main/app/src/main/java/com/example/autoflow/NewProjectActivity.kt): `app/src/main/java/com/example/autoflow/NewProjectActivity.kt`
- [Action config](https://github.com/arefin994/autoflow/blob/main/app/src/main/java/com/example/autoflow/NewProjectActivity.kt): `app/src/main/java/com/example/autoflow/NewProjectActivity.kt`
- [Workflow canvas](https://github.com/arefin994/autoflow/blob/main/app/src/main/java/com/example/autoflow/NewProjectActivity.kt): `app/src/main/java/com/example/autoflow/NewProjectActivity.kt`
- [Node connections](https://github.com/arefin994/autoflow/blob/main/app/src/main/java/com/example/autoflow/NewProjectActivity.kt): `app/src/main/java/com/example/autoflow/NewProjectActivity.kt`

### Project state

- [Undo redo](https://github.com/arefin994/autoflow/blob/main/app/src/main/java/com/example/autoflow/NewProjectActivity.kt): `app/src/main/java/com/example/autoflow/NewProjectActivity.kt`
- [Project state](https://github.com/arefin994/autoflow/blob/main/app/src/main/java/com/example/autoflow/NewProjectActivity.kt): `app/src/main/java/com/example/autoflow/NewProjectActivity.kt`
- **Device storage**

### Other components

- **User**

## Connections

- User → Start screen: opens
- Start screen → Main screen: continues
- Main screen → Project list: navigates
- User → Project list: manages projects
- Project list → New project: creates
- Project list → Existing project: opens
- User → New project: edits workflow
- New project → App choices: offers choices
- New project → Trigger step: configures
- New project → Action steps: adds steps
- New project → Workflow canvas: arranges nodes
- New project → Node connections: connects nodes
- Trigger step → Trigger config: sets options
- Action steps → Action config: sets options
- New project → Undo redo: tracks edits
- Undo redo → Project state: undoes and redoes
- New project → Project state: updates
- Existing project → Device storage: loads project
- Device storage → Existing project: returns saved state
- Existing project → Project state: restores workflow
- Project state → Device storage: saves JSON
- Project list → Device storage: reads projects
