# divyanshuchipa/intrachat-android-fastapi architecture

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

- Interactive diagram: https://gitdiagram.com/divyanshuchipa/intrachat-android-fastapi
- Repository: https://github.com/divyanshuchipa/intrachat-android-fastapi

## Overview

Intra is a LAN messaging product with Android and web clients backed by a FastAPI server, plus a desktop administration utility. The main workflow is user authentication, then real-time or offline message exchange, with file sharing and calls as related stages and Lumir as an assistant branch. The graph also captures administration and scheduled environment alerts. Some subsystems are represented by their exact enclosing directory because their implementation was not sampled; those links are limited to documented capabilities or visible router registration.

Main entry points: [`backend/server.py`](https://github.com/divyanshuchipa/intrachat-android-fastapi/blob/master/backend/server.py) (FastAPI app), [`backend/chat.py`](https://github.com/divyanshuchipa/intrachat-android-fastapi/blob/master/backend/chat.py) (WebSocket chat), [`backend/tasks.py`](https://github.com/divyanshuchipa/intrachat-android-fastapi/blob/master/backend/tasks.py) (Scheduled alerts), [`backend/lumir/engine.py`](https://github.com/divyanshuchipa/intrachat-android-fastapi/blob/master/backend/lumir/engine.py) (Lumir command engine)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_clients["Messaging clients"]
  node_android["Android app"]
  node_web["Web client"]
end

subgraph group_server["Backend services"]
  node_api["FastAPI app<br/>[server.py]"]
  node_users["Authentication and profiles<br/>[users.py]"]
  node_chat["WebSocket chat<br/>[chat.py]"]
  node_files["File sharing<br/>[files.py]"]
  node_calls["Call signaling<br/>[calls.py]"]
  node_tasks["Scheduled alerts<br/>[tasks.py]"]
end

subgraph group_state["Persistent state"]
  node_user_store[("User database<br/>[users.py]")]
  node_message_store[("Message history<br/>[messages.py]")]
end

subgraph group_assistant["Lumir assistant"]
  node_lumir["Lumir command engine<br/>[engine.py]"]
  node_ai["AI model adapter<br/>[ai_engine.py]"]
  node_memory["Assistant memory<br/>[memory.py]"]
  node_utilities["Media utilities<br/>[utilities.py]"]
end

subgraph group_operations["Administration"]
  node_desktop_admin["Desktop admin<br/>[admin.py]"]
  node_admin_api["Admin endpoints<br/>[admin_api.py]"]
end

node_user(("LAN user"))
node_ollama["Ollama service"]
node_weather["Weather service"]

node_user -->|"uses"| node_android
node_user -->|"uses"| node_web
node_android -->|"connects to"| node_api
node_web -->|"HTTP and WebSocket"| node_api
node_api -->|"handles auth"| node_users
node_api -->|"registers router"| node_chat
node_api -->|"registers router"| node_files
node_api -->|"registers router"| node_calls
node_api -->|"registers router"| node_admin_api
node_users -->|"reads and writes"| node_user_store
node_chat -->|"stores and loads"| node_message_store
node_chat -->|"checks users"| node_users
node_chat -->|"routes assistant messages"| node_lumir
node_chat -->|"saves uploaded media"| node_memory
node_lumir -->|"requests AI response"| node_ai
node_lumir -->|"runs media commands"| node_utilities
node_lumir -->|"searches and saves facts"| node_memory
node_ai -->|"sends chat request"| node_ollama
node_desktop_admin -->|"manages server"| node_admin_api
node_api -->|"schedules jobs"| node_tasks
node_tasks -->|"fetches forecast"| node_weather
node_tasks -->|"generates alert text"| node_ai
node_tasks -->|"broadcasts alerts"| node_chat

click node_android "https://github.com/divyanshuchipa/intrachat-android-fastapi/tree/master/app/src/main/java/com/example/intra"
click node_web "https://github.com/divyanshuchipa/intrachat-android-fastapi/tree/master/backend/static"
click node_desktop_admin "https://github.com/divyanshuchipa/intrachat-android-fastapi/blob/master/intra_admin/admin.py"
click node_api "https://github.com/divyanshuchipa/intrachat-android-fastapi/blob/master/backend/server.py"
click node_users "https://github.com/divyanshuchipa/intrachat-android-fastapi/blob/master/backend/users.py"
click node_chat "https://github.com/divyanshuchipa/intrachat-android-fastapi/blob/master/backend/chat.py"
click node_files "https://github.com/divyanshuchipa/intrachat-android-fastapi/blob/master/backend/files.py"
click node_calls "https://github.com/divyanshuchipa/intrachat-android-fastapi/blob/master/backend/calls.py"
click node_admin_api "https://github.com/divyanshuchipa/intrachat-android-fastapi/blob/master/backend/admin_api.py"
click node_tasks "https://github.com/divyanshuchipa/intrachat-android-fastapi/blob/master/backend/tasks.py"
click node_user_store "https://github.com/divyanshuchipa/intrachat-android-fastapi/blob/master/backend/users.py"
click node_message_store "https://github.com/divyanshuchipa/intrachat-android-fastapi/blob/master/backend/messages.py"
click node_lumir "https://github.com/divyanshuchipa/intrachat-android-fastapi/blob/master/backend/lumir/engine.py"
click node_ai "https://github.com/divyanshuchipa/intrachat-android-fastapi/blob/master/backend/lumir/ai_engine.py"
click node_memory "https://github.com/divyanshuchipa/intrachat-android-fastapi/blob/master/backend/lumir/memory.py"
click node_utilities "https://github.com/divyanshuchipa/intrachat-android-fastapi/blob/master/backend/lumir/utilities.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_android,node_web,node_user toneBlue
class node_api,node_users,node_chat,node_files,node_calls,node_tasks toneAmber
class node_user_store,node_message_store toneMint
class node_lumir,node_ai,node_memory,node_utilities toneRose
class node_desktop_admin,node_admin_api,node_ollama,node_weather toneIndigo
```

## Components

### Messaging clients

- [Android app](https://github.com/divyanshuchipa/intrachat-android-fastapi/tree/master/app/src/main/java/com/example/intra): `app/src/main/java/com/example/intra`
- [Web client](https://github.com/divyanshuchipa/intrachat-android-fastapi/tree/master/backend/static): `backend/static`

### Backend services

- [FastAPI app](https://github.com/divyanshuchipa/intrachat-android-fastapi/blob/master/backend/server.py): `backend/server.py`
- [Authentication and profiles](https://github.com/divyanshuchipa/intrachat-android-fastapi/blob/master/backend/users.py): `backend/users.py`
- [WebSocket chat](https://github.com/divyanshuchipa/intrachat-android-fastapi/blob/master/backend/chat.py): `backend/chat.py`
- [File sharing](https://github.com/divyanshuchipa/intrachat-android-fastapi/blob/master/backend/files.py): `backend/files.py`
- [Call signaling](https://github.com/divyanshuchipa/intrachat-android-fastapi/blob/master/backend/calls.py): `backend/calls.py`
- [Scheduled alerts](https://github.com/divyanshuchipa/intrachat-android-fastapi/blob/master/backend/tasks.py): `backend/tasks.py`

### Persistent state

- [User database](https://github.com/divyanshuchipa/intrachat-android-fastapi/blob/master/backend/users.py): `backend/users.py`
- [Message history](https://github.com/divyanshuchipa/intrachat-android-fastapi/blob/master/backend/messages.py): `backend/messages.py`

### Lumir assistant

- [Lumir command engine](https://github.com/divyanshuchipa/intrachat-android-fastapi/blob/master/backend/lumir/engine.py): `backend/lumir/engine.py`
- [AI model adapter](https://github.com/divyanshuchipa/intrachat-android-fastapi/blob/master/backend/lumir/ai_engine.py): `backend/lumir/ai_engine.py`
- [Assistant memory](https://github.com/divyanshuchipa/intrachat-android-fastapi/blob/master/backend/lumir/memory.py): `backend/lumir/memory.py`
- [Media utilities](https://github.com/divyanshuchipa/intrachat-android-fastapi/blob/master/backend/lumir/utilities.py): `backend/lumir/utilities.py`

### Administration

- [Desktop admin](https://github.com/divyanshuchipa/intrachat-android-fastapi/blob/master/intra_admin/admin.py): `intra_admin/admin.py`
- [Admin endpoints](https://github.com/divyanshuchipa/intrachat-android-fastapi/blob/master/backend/admin_api.py): `backend/admin_api.py`

### Other components

- **LAN user**
- **Ollama service**
- **Weather service**

## Connections

- LAN user → Android app: uses
- LAN user → Web client: uses
- Android app → FastAPI app: connects to
- Web client → FastAPI app: HTTP and WebSocket
- FastAPI app → Authentication and profiles: handles auth
- FastAPI app → WebSocket chat: registers router
- FastAPI app → File sharing: registers router
- FastAPI app → Call signaling: registers router
- FastAPI app → Admin endpoints: registers router
- Authentication and profiles → User database: reads and writes
- WebSocket chat → Message history: stores and loads
- WebSocket chat → Authentication and profiles: checks users
- WebSocket chat → Lumir command engine: routes assistant messages
- WebSocket chat → Assistant memory: saves uploaded media
- Lumir command engine → AI model adapter: requests AI response
- Lumir command engine → Media utilities: runs media commands
- Lumir command engine → Assistant memory: searches and saves facts
- AI model adapter → Ollama service: sends chat request
- Desktop admin → Admin endpoints: manages server
- FastAPI app → Scheduled alerts: schedules jobs
- Scheduled alerts → Weather service: fetches forecast
- Scheduled alerts → AI model adapter: generates alert text
- Scheduled alerts → WebSocket chat: broadcasts alerts
