# iabhijithks/automeet architecture

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

- Interactive diagram: https://gitdiagram.com/iabhijithks/automeet
- Repository: https://github.com/iabhijithks/automeet

## Overview

AutoMeet is a local Electron desktop app for starting a configured Zoom meeting and coordinating local OBS recording. The user initiates the workflow from the renderer; the preload bridge carries requests to Electron’s main process, which dispatches meeting automation to the controller. The controller opens Zoom, detects meeting entry, starts OBS recording, monitors the meeting, and stops recording when it ends. Settings and status are separate UI concerns. Scheduling is represented in configuration, but README says automatic scheduled startup is not implemented in v1. Unshown credential-service details are represented only as documented local encrypted storage.

Main entry points: [`src/main/main.js`](https://github.com/iabhijithks/automeet/blob/master/src/main/main.js) (IPC handlers), [`src/main/services/meeting-controller.js`](https://github.com/iabhijithks/automeet/blob/master/src/main/services/meeting-controller.js) (Meeting controller), [`src/main/services/recording-service.js`](https://github.com/iabhijithks/automeet/blob/master/src/main/services/recording-service.js) (OBS recording), [`src/main/services/credential-service.js`](https://github.com/iabhijithks/automeet/blob/master/src/main/services/credential-service.js) (Credential service)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_interface["User interface"]
  node_renderer["Dashboard and settings<br/>[renderer.js]"]
end

subgraph group_desktop["Electron coordination"]
  node_preload["Secure API bridge<br/>[preload.js]"]
  node_main["IPC handlers<br/>[main.js]"]
end

subgraph group_automation["Meeting automation"]
  node_controller["Meeting controller"]
  node_zoom["Zoom integration<br/>[zoom-service.js]"]
  node_recording["OBS recording"]
end

subgraph group_localdata["Local data and services"]
  node_config["Configuration service<br/>[config-service.js]"]
  node_configfile[("Local config file")]
  node_credentials["Credential service"]
  node_credentialstore[("Encrypted local credentials")]
end

node_user(("User"))
node_safe["Electron safeStorage"]
node_zoomapp["Zoom desktop client"]
node_obsapp["OBS Studio"]

node_user -->|"starts and configures"| node_renderer
node_renderer -->|"requests actions"| node_preload
node_preload -->|"invokes IPC"| node_main
node_main -->|"returns status"| node_renderer
node_main -->|"starts meeting"| node_controller
node_controller -->|"loads settings"| node_config
node_main -->|"loads or saves"| node_config
node_config -->|"reads and writes"| node_configfile
node_controller -->|"opens and detects"| node_zoom
node_zoom -->|"launches or opens"| node_zoomapp
node_controller -->|"starts or stops"| node_recording
node_recording -->|"gets password"| node_credentials
node_main -->|"saves or checks"| node_credentials
node_credentials -->|"stores locally"| node_credentialstore
node_credentials -->|"encrypts credentials"| node_safe
node_recording -->|"launches and controls"| node_obsapp
node_main -->|"handles Zoom requests"| node_zoom
node_main -->|"checks recording"| node_recording

click node_renderer "https://github.com/iabhijithks/automeet/blob/master/src/renderer/renderer.js"
click node_preload "https://github.com/iabhijithks/automeet/blob/master/src/main/preload.js"
click node_main "https://github.com/iabhijithks/automeet/blob/master/src/main/main.js"
click node_controller "https://github.com/iabhijithks/automeet/blob/master/src/main/services/meeting-controller.js"
click node_zoom "https://github.com/iabhijithks/automeet/blob/master/src/main/services/zoom-service.js"
click node_recording "https://github.com/iabhijithks/automeet/blob/master/src/main/services/recording-service.js"
click node_config "https://github.com/iabhijithks/automeet/blob/master/src/main/services/config-service.js"
click node_credentials "https://github.com/iabhijithks/automeet/blob/master/src/main/services/credential-service.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_renderer,node_user,node_zoomapp toneBlue
class node_preload,node_main,node_safe toneAmber
class node_controller,node_zoom,node_recording toneMint
class node_config,node_configfile,node_credentials,node_credentialstore toneRose
class node_obsapp toneIndigo
```

## Components

### User interface

- [Dashboard and settings](https://github.com/iabhijithks/automeet/blob/master/src/renderer/renderer.js): `src/renderer/renderer.js`

### Electron coordination

- [Secure API bridge](https://github.com/iabhijithks/automeet/blob/master/src/main/preload.js): `src/main/preload.js`
- [IPC handlers](https://github.com/iabhijithks/automeet/blob/master/src/main/main.js): `src/main/main.js`

### Meeting automation

- [Meeting controller](https://github.com/iabhijithks/automeet/blob/master/src/main/services/meeting-controller.js): `src/main/services/meeting-controller.js`
- [Zoom integration](https://github.com/iabhijithks/automeet/blob/master/src/main/services/zoom-service.js): `src/main/services/zoom-service.js`
- [OBS recording](https://github.com/iabhijithks/automeet/blob/master/src/main/services/recording-service.js): `src/main/services/recording-service.js`

### Local data and services

- [Configuration service](https://github.com/iabhijithks/automeet/blob/master/src/main/services/config-service.js): `src/main/services/config-service.js`
- **Local config file**
- [Credential service](https://github.com/iabhijithks/automeet/blob/master/src/main/services/credential-service.js): `src/main/services/credential-service.js`
- **Encrypted local credentials**

### Other components

- **User**
- **Electron safeStorage**
- **Zoom desktop client**
- **OBS Studio**

## Connections

- User → Dashboard and settings: starts and configures
- Dashboard and settings → Secure API bridge: requests actions
- Secure API bridge → IPC handlers: invokes IPC
- IPC handlers → Dashboard and settings: returns status
- IPC handlers → Meeting controller: starts meeting
- Meeting controller → Configuration service: loads settings
- IPC handlers → Configuration service: loads or saves
- Configuration service → Local config file: reads and writes
- Meeting controller → Zoom integration: opens and detects
- Zoom integration → Zoom desktop client: launches or opens
- Meeting controller → OBS recording: starts or stops
- OBS recording → Credential service: gets password
- IPC handlers → Credential service: saves or checks
- Credential service → Encrypted local credentials: stores locally
- Credential service → Electron safeStorage: encrypts credentials
- OBS recording → OBS Studio: launches and controls
- IPC handlers → Zoom integration: handles Zoom requests
- IPC handlers → OBS recording: checks recording
