# imtigger/sms2telegram architecture

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

## Overview

SMS2Telegram is an Android app that forwards received SMS messages to a user-configured Telegram bot and chat. The main workflow receives an SMS, formats and queues it, then schedules background delivery; the worker sends queued messages and records delivery status. The setup UI also fetches chat choices and validates bot configuration. The graph reflects the sampled receiver, worker, repositories, and UI excerpts; manifest wiring and unsampled UI behavior are not inferred.

Main entry points: [`app/src/main/java/com/tigerworkshop/sms2telegram/data/TelegramDeliveryWorker.kt`](https://github.com/imtigger/sms2telegram/blob/main/app/src/main/java/com/tigerworkshop/sms2telegram/data/TelegramDeliveryWorker.kt) (Delivery worker), [`app/src/main/java/com/tigerworkshop/sms2telegram/ui/MainActivity.kt`](https://github.com/imtigger/sms2telegram/blob/main/app/src/main/java/com/tigerworkshop/sms2telegram/ui/MainActivity.kt) (Setup UI), [`app/src/main/java/com/tigerworkshop/sms2telegram/sms/SmsReceiver.kt`](https://github.com/imtigger/sms2telegram/blob/main/app/src/main/java/com/tigerworkshop/sms2telegram/sms/SmsReceiver.kt) (SMS receiver), [`app/src/main/java/com/tigerworkshop/sms2telegram/data/SettingsRepository.kt`](https://github.com/imtigger/sms2telegram/blob/main/app/src/main/java/com/tigerworkshop/sms2telegram/data/SettingsRepository.kt) (Settings store)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_setup["Setup and controls"]
  node_activity["Setup UI<br/>[MainActivity.kt]"]
end

subgraph group_intake["SMS intake"]
  node_sms["SMS receiver<br/>[SmsReceiver.kt]"]
end

subgraph group_delivery["Delivery"]
  node_worker["Delivery worker"]
  node_forwarder["Telegram client"]
end

subgraph group_state["Local state"]
  node_settings[("Settings store")]
  node_outbox[("Pending outbox")]
  node_statusbus["Status updates<br/>[StatusUpdateBus.kt]"]
end

node_user(("User"))
node_telegram{{"Telegram Bot API"}}
node_androidsms{{"Android SMS broadcast"}}
node_workmanager{{"Android WorkManager"}}

node_user -->|"configures"| node_activity
node_activity -->|"reads/writes"| node_settings
node_activity -->|"validates/fetches"| node_forwarder
node_forwarder -->|"HTTP requests"| node_telegram
node_activity -->|"checks/clears"| node_outbox
node_activity -->|"observes"| node_statusbus
node_statusbus -->|"emits updates"| node_activity
node_androidsms -->|"delivers SMS"| node_sms
node_sms -->|"checks options"| node_settings
node_sms -->|"queues message"| node_outbox
node_sms -->|"saves status"| node_settings
node_sms -->|"notifies"| node_statusbus
node_sms -->|"enqueues work"| node_worker
node_activity -->|"enqueues work"| node_worker
node_activity -->|"cancels work"| node_worker
node_worker -->|"reads settings"| node_settings
node_worker -->|"saves status"| node_settings
node_worker -->|"reads/removes"| node_outbox
node_worker -->|"sends message"| node_forwarder
node_worker -->|"notifies"| node_statusbus
node_workmanager -->|"runs scheduled work"| node_worker

click node_activity "https://github.com/imtigger/sms2telegram/blob/main/app/src/main/java/com/tigerworkshop/sms2telegram/ui/MainActivity.kt"
click node_sms "https://github.com/imtigger/sms2telegram/blob/main/app/src/main/java/com/tigerworkshop/sms2telegram/sms/SmsReceiver.kt"
click node_worker "https://github.com/imtigger/sms2telegram/blob/main/app/src/main/java/com/tigerworkshop/sms2telegram/data/TelegramDeliveryWorker.kt"
click node_forwarder "https://github.com/imtigger/sms2telegram/blob/main/app/src/main/java/com/tigerworkshop/sms2telegram/data/TelegramForwarder.kt"
click node_settings "https://github.com/imtigger/sms2telegram/blob/main/app/src/main/java/com/tigerworkshop/sms2telegram/data/SettingsRepository.kt"
click node_outbox "https://github.com/imtigger/sms2telegram/blob/main/app/src/main/java/com/tigerworkshop/sms2telegram/data/PendingMessageOutbox.kt"
click node_statusbus "https://github.com/imtigger/sms2telegram/blob/main/app/src/main/java/com/tigerworkshop/sms2telegram/data/StatusUpdateBus.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_activity,node_user toneBlue
class node_sms toneAmber
class node_worker,node_forwarder,node_telegram toneMint
class node_settings,node_outbox,node_statusbus toneRose
class node_androidsms,node_workmanager toneIndigo
```

## Components

### Setup and controls

- [Setup UI](https://github.com/imtigger/sms2telegram/blob/main/app/src/main/java/com/tigerworkshop/sms2telegram/ui/MainActivity.kt): `app/src/main/java/com/tigerworkshop/sms2telegram/ui/MainActivity.kt`

### SMS intake

- [SMS receiver](https://github.com/imtigger/sms2telegram/blob/main/app/src/main/java/com/tigerworkshop/sms2telegram/sms/SmsReceiver.kt): `app/src/main/java/com/tigerworkshop/sms2telegram/sms/SmsReceiver.kt`

### Delivery

- [Delivery worker](https://github.com/imtigger/sms2telegram/blob/main/app/src/main/java/com/tigerworkshop/sms2telegram/data/TelegramDeliveryWorker.kt): `app/src/main/java/com/tigerworkshop/sms2telegram/data/TelegramDeliveryWorker.kt`
- [Telegram client](https://github.com/imtigger/sms2telegram/blob/main/app/src/main/java/com/tigerworkshop/sms2telegram/data/TelegramForwarder.kt): `app/src/main/java/com/tigerworkshop/sms2telegram/data/TelegramForwarder.kt`

### Local state

- [Settings store](https://github.com/imtigger/sms2telegram/blob/main/app/src/main/java/com/tigerworkshop/sms2telegram/data/SettingsRepository.kt): `app/src/main/java/com/tigerworkshop/sms2telegram/data/SettingsRepository.kt`
- [Pending outbox](https://github.com/imtigger/sms2telegram/blob/main/app/src/main/java/com/tigerworkshop/sms2telegram/data/PendingMessageOutbox.kt): `app/src/main/java/com/tigerworkshop/sms2telegram/data/PendingMessageOutbox.kt`
- [Status updates](https://github.com/imtigger/sms2telegram/blob/main/app/src/main/java/com/tigerworkshop/sms2telegram/data/StatusUpdateBus.kt): `app/src/main/java/com/tigerworkshop/sms2telegram/data/StatusUpdateBus.kt`

### Other components

- **User**
- **Telegram Bot API**
- **Android SMS broadcast**
- **Android WorkManager**

## Connections

- User → Setup UI: configures
- Setup UI → Settings store: reads/writes
- Setup UI → Telegram client: validates/fetches
- Telegram client → Telegram Bot API: HTTP requests
- Setup UI → Pending outbox: checks/clears
- Setup UI → Status updates: observes
- Status updates → Setup UI: emits updates
- Android SMS broadcast → SMS receiver: delivers SMS
- SMS receiver → Settings store: checks options
- SMS receiver → Pending outbox: queues message
- SMS receiver → Settings store: saves status
- SMS receiver → Status updates: notifies
- SMS receiver → Delivery worker: enqueues work
- Setup UI → Delivery worker: enqueues work
- Setup UI → Delivery worker: cancels work
- Delivery worker → Settings store: reads settings
- Delivery worker → Settings store: saves status
- Delivery worker → Pending outbox: reads/removes
- Delivery worker → Telegram client: sends message
- Delivery worker → Status updates: notifies
- Android WorkManager → Delivery worker: runs scheduled work
