# andreas-prouza/i-releaser architecture

> Architecture diagram of the GitHub repository andreas-prouza/i-releaser, 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/andreas-prouza/i-releaser
- Repository: https://github.com/andreas-prouza/i-releaser

## Overview

i-Releaser creates deployment requests from configured workflows and objects, then advances them through named stages and processing steps, including parallel branches. Users can initiate and inspect deployments through the web API or the command-line entry point; the web application also exposes workflow visualization, object selection, permissions, custom deployment data, and activity history. Deployment state and run records are persisted in SQLite. The README documents transfer, backup, and IBM i deployment capabilities, but their detailed execution wiring is not shown in the sampled source.

Main entry points: [`modules/meta_file.py`](https://github.com/andreas-prouza/i-releaser/blob/main/modules/meta_file.py) (Deployment request), [`webapp/routes/routes.py`](https://github.com/andreas-prouza/i-releaser/blob/main/webapp/routes/routes.py) (Request handlers), [`modules/db/meta_file_data.py`](https://github.com/andreas-prouza/i-releaser/blob/main/modules/db/meta_file_data.py) (Deployment persistence), [`webapp/index.py`](https://github.com/andreas-prouza/i-releaser/blob/main/webapp/index.py) (Web app routes)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Web interface"]
  node_app["Web app routes<br/>[index.py]"]
  node_handlers["Request handlers<br/>[routes.py]"]
  node_flowchart["Workflow visualization<br/>[flowchart.py]"]
end

subgraph group_workflow["Deployment workflow"]
  node_workflow_def["Workflow definitions<br/>[workflow.py]"]
  node_meta["Deployment request<br/>[meta_file.py]"]
  node_stages["Stage processing<br/>[stages.py]"]
  node_objects["Deployment objects<br/>[deploy_object.py]"]
  node_checks["Deployment checks<br/>[deploy_checks.py]"]
end

subgraph group_execution["Execution"]
  node_actions["Actions and commands<br/>[deploy_action.py]"]
  node_ibmi["IBM i commands<br/>[ibm_i_commands.py]"]
end

subgraph group_persistence["State and history"]
  node_db_init["Database initialization<br/>[app_sqlite.py]"]
  node_meta_store["Deployment persistence<br/>[meta_file_data.py]"]
  node_version_store["Deployment versions"]
  node_history_store["Activity and run history"]
  node_sqlite[("SQLite database")]
end

subgraph group_access["Identity and access"]
  node_session["Session management<br/>[server_sessions.py]"]
  node_permissions["Permission checks<br/>[permissions.py]"]
  node_permission_config["Permission configuration"]
end

node_user(("User / API client"))
node_cli["CLI entry point<br/>[deployment.py]"]
node_target(("IBM i target"))

node_user -->|"sends requests"| node_app
node_user -->|"runs commands"| node_cli
node_app -->|"dispatches routes"| node_handlers
node_handlers -->|"creates or runs"| node_meta
node_handlers -->|"loads workflow"| node_workflow_def
node_handlers -->|"checks access"| node_permissions
node_handlers -->|"renders details"| node_flowchart
node_app -->|"initializes database"| node_db_init
node_app -->|"manages sessions"| node_session
node_cli -->|"creates or runs"| node_meta
node_workflow_def -->|"defines stages"| node_stages
node_meta -->|"runs stages"| node_stages
node_meta -->|"runs commands"| node_actions
node_meta -->|"checks deployment"| node_checks
node_meta -->|"tracks objects"| node_objects
node_actions -.->|"issues commands"| node_ibmi
node_ibmi -.->|"operates on"| node_target
node_permissions -->|"uses configuration"| node_permission_config
node_meta -->|"loads and saves"| node_meta_store
node_handlers -->|"creates requests"| node_meta_store
node_meta_store -->|"loads versions"| node_version_store
node_meta_store -->|"records history"| node_history_store
node_db_init -->|"initializes schema"| node_sqlite
node_meta_store -->|"reads and writes"| node_sqlite
node_version_store -->|"reads and writes"| node_sqlite
node_history_store -->|"reads and writes"| node_sqlite

click node_cli "https://github.com/andreas-prouza/i-releaser/blob/main/deployment.py"
click node_app "https://github.com/andreas-prouza/i-releaser/blob/main/webapp/index.py"
click node_handlers "https://github.com/andreas-prouza/i-releaser/blob/main/webapp/routes/routes.py"
click node_flowchart "https://github.com/andreas-prouza/i-releaser/blob/main/webapp/web_modules/flowchart.py"
click node_session "https://github.com/andreas-prouza/i-releaser/blob/main/webapp/web_modules/server_sessions.py"
click node_workflow_def "https://github.com/andreas-prouza/i-releaser/blob/main/modules/workflow.py"
click node_meta "https://github.com/andreas-prouza/i-releaser/blob/main/modules/meta_file.py"
click node_stages "https://github.com/andreas-prouza/i-releaser/blob/main/modules/stages.py"
click node_objects "https://github.com/andreas-prouza/i-releaser/blob/main/modules/deploy_object.py"
click node_checks "https://github.com/andreas-prouza/i-releaser/blob/main/modules/deploy_checks.py"
click node_actions "https://github.com/andreas-prouza/i-releaser/blob/main/modules/deploy_action.py"
click node_ibmi "https://github.com/andreas-prouza/i-releaser/blob/main/modules/ibm_i_commands.py"
click node_permissions "https://github.com/andreas-prouza/i-releaser/blob/main/modules/permissions.py"
click node_permission_config "https://github.com/andreas-prouza/i-releaser/blob/main/modules/permission_config.py"
click node_db_init "https://github.com/andreas-prouza/i-releaser/blob/main/modules/db/app_sqlite.py"
click node_meta_store "https://github.com/andreas-prouza/i-releaser/blob/main/modules/db/meta_file_data.py"
click node_version_store "https://github.com/andreas-prouza/i-releaser/blob/main/modules/db/deploy_version_sqlite.py"
click node_history_store "https://github.com/andreas-prouza/i-releaser/blob/main/modules/db/run_history_data.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_handlers,node_flowchart,node_user toneBlue
class node_workflow_def,node_meta,node_stages,node_objects,node_checks toneAmber
class node_actions,node_ibmi toneMint
class node_db_init,node_meta_store,node_version_store,node_history_store,node_sqlite toneRose
class node_session,node_permissions,node_permission_config,node_target toneIndigo
class node_cli toneTeal
```

## Components

### Web interface

- [Web app routes](https://github.com/andreas-prouza/i-releaser/blob/main/webapp/index.py): `webapp/index.py`
- [Request handlers](https://github.com/andreas-prouza/i-releaser/blob/main/webapp/routes/routes.py): `webapp/routes/routes.py`
- [Workflow visualization](https://github.com/andreas-prouza/i-releaser/blob/main/webapp/web_modules/flowchart.py): `webapp/web_modules/flowchart.py`

### Deployment workflow

- [Workflow definitions](https://github.com/andreas-prouza/i-releaser/blob/main/modules/workflow.py): `modules/workflow.py`
- [Deployment request](https://github.com/andreas-prouza/i-releaser/blob/main/modules/meta_file.py): `modules/meta_file.py`
- [Stage processing](https://github.com/andreas-prouza/i-releaser/blob/main/modules/stages.py): `modules/stages.py`
- [Deployment objects](https://github.com/andreas-prouza/i-releaser/blob/main/modules/deploy_object.py): `modules/deploy_object.py`
- [Deployment checks](https://github.com/andreas-prouza/i-releaser/blob/main/modules/deploy_checks.py): `modules/deploy_checks.py`

### Execution

- [Actions and commands](https://github.com/andreas-prouza/i-releaser/blob/main/modules/deploy_action.py): `modules/deploy_action.py`
- [IBM i commands](https://github.com/andreas-prouza/i-releaser/blob/main/modules/ibm_i_commands.py): `modules/ibm_i_commands.py`

### State and history

- [Database initialization](https://github.com/andreas-prouza/i-releaser/blob/main/modules/db/app_sqlite.py): `modules/db/app_sqlite.py`
- [Deployment persistence](https://github.com/andreas-prouza/i-releaser/blob/main/modules/db/meta_file_data.py): `modules/db/meta_file_data.py`
- [Deployment versions](https://github.com/andreas-prouza/i-releaser/blob/main/modules/db/deploy_version_sqlite.py): `modules/db/deploy_version_sqlite.py`
- [Activity and run history](https://github.com/andreas-prouza/i-releaser/blob/main/modules/db/run_history_data.py): `modules/db/run_history_data.py`
- **SQLite database**

### Identity and access

- [Session management](https://github.com/andreas-prouza/i-releaser/blob/main/webapp/web_modules/server_sessions.py): `webapp/web_modules/server_sessions.py`
- [Permission checks](https://github.com/andreas-prouza/i-releaser/blob/main/modules/permissions.py): `modules/permissions.py`
- [Permission configuration](https://github.com/andreas-prouza/i-releaser/blob/main/modules/permission_config.py): `modules/permission_config.py`

### Other components

- **User / API client**
- [CLI entry point](https://github.com/andreas-prouza/i-releaser/blob/main/deployment.py): `deployment.py`
- **IBM i target**

## Connections

- User / API client → Web app routes: sends requests
- User / API client → CLI entry point: runs commands
- Web app routes → Request handlers: dispatches routes
- Request handlers → Deployment request: creates or runs
- Request handlers → Workflow definitions: loads workflow
- Request handlers → Permission checks: checks access
- Request handlers → Workflow visualization: renders details
- Web app routes → Database initialization: initializes database
- Web app routes → Session management: manages sessions
- CLI entry point → Deployment request: creates or runs
- Workflow definitions → Stage processing: defines stages
- Deployment request → Stage processing: runs stages
- Deployment request → Actions and commands: runs commands
- Deployment request → Deployment checks: checks deployment
- Deployment request → Deployment objects: tracks objects
- Actions and commands → IBM i commands: issues commands
- IBM i commands → IBM i target: operates on
- Permission checks → Permission configuration: uses configuration
- Deployment request → Deployment persistence: loads and saves
- Request handlers → Deployment persistence: creates requests
- Deployment persistence → Deployment versions: loads versions
- Deployment persistence → Activity and run history: records history
- Database initialization → SQLite database: initializes schema
- Deployment persistence → SQLite database: reads and writes
- Deployment versions → SQLite database: reads and writes
- Activity and run history → SQLite database: reads and writes
