LocalChat 基本設計書

完全オフライン環境で動作する社内向けチャットアプリケーションの基本設計図集です。

本設計書の図はすべて Mermaid で記述され、アプリ本体に同梱された frontend/static/vendor/mermaid.min.js を用いてオフライン描画されます。外部CDN・インターネット接続は不要です。

1. システム概要

LocalChat は、外部サービスに一切依存せず社内イントラネット(閉域網)内だけで完結するチャットアプリです。 サーバー(ワークスペース)/チャンネル/DM/返信/リアクション/ファイル添付/メンション/図表描画(Mermaid・PlantUML)に対応します。

分類 採用技術 備考
バックエンドPython / FastAPIREST API + WebSocket
リアルタイム通信WebSocket(プロセス内 ConnectionManager)外部ブローカー不使用
データストアSQLite(SQLAlchemy ORM)オンプレミスのローカルファイル
認証PBKDF2-HMAC-SHA256 + HMAC標準ライブラリのみ(外部依存なし)
フロントエンド素のHTML / CSS / JavaScript(SPA)ローカル配信・CDN不使用
図表描画Mermaid(同梱) / PlantUML(同梱jar + JRE)サーバー側でSVG生成
セキュリティTLS(自己署名自動生成)+ プライベートNW限定ガードグローバルIPを遮断

2. システム全体構成

flowchart LR
  subgraph LAN["社内LAN(プライベートネットワーク・閉域網)"]
    direction LR
    subgraph Client["クライアント(ブラウザ SPA)"]
      UI["index.html / app.js
markdown.js / mermaid.min.js"] end subgraph Server["社内サーバー(uvicorn + FastAPI)"] Guard{{"PrivateNetworkGuard
ミドルウェア"}} API["REST API ルーター群"] WS["WebSocket /ws
ConnectionManager"] SVC["サービス層 / 認証 / セキュリティ"] ORM["SQLAlchemy ORM"] RENDER["PlantUML レンダラ"] end DB[("SQLite
localchat.db")] FILES[("ローカルファイル
data/uploads")] JAR["plantuml.jar + JRE17"] end Internet(("インターネット")) -. 遮断 .-x Guard UI -- "HTTPS (REST)" --> Guard UI -- "WSS (リアルタイム)" --> Guard Guard --> API Guard --> WS API --> SVC WS --> SVC SVC --> ORM ORM --> DB API --> FILES RENDER --> JAR API --> RENDER WS -- "イベント配信" --> UI
flowchart LR
  subgraph LAN["Corporate LAN (private, closed network)"]
    direction LR
    subgraph Client["Client (browser SPA)"]
      UI["index.html / app.js
markdown.js / mermaid.min.js"] end subgraph Server["On-prem server (uvicorn + FastAPI)"] Guard{{"PrivateNetworkGuard
middleware"}} API["REST API routers"] WS["WebSocket /ws
ConnectionManager"] SVC["Service / Auth / Security"] ORM["SQLAlchemy ORM"] RENDER["PlantUML renderer"] end DB[("SQLite
localchat.db")] FILES[("Local files
data/uploads")] JAR["plantuml.jar + JRE17"] end Internet(("Internet")) -. blocked .-x Guard UI -- "HTTPS (REST)" --> Guard UI -- "WSS (realtime)" --> Guard Guard --> API Guard --> WS API --> SVC WS --> SVC SVC --> ORM ORM --> DB API --> FILES RENDER --> JAR API --> RENDER WS -- "event push" --> UI
図1. システム全体構成。社内LAN内で完結し、グローバルIPからのアクセスはミドルウェアで遮断される。

3. 設計図の構成

アーキテクチャ図

レイヤ構成、コンポーネント分割、デプロイ構成を示します。

開く →

クラス図・ER図

ドメインモデル(ORMエンティティ)と関連、バックエンドのモジュール構成を示します。

開く →

シーケンス図

ログイン、メッセージ送信+リアルタイム配信、招待参加などの処理シーケンスを示します。

開く →

フローチャート図

アクセス制御・認証・権限判定・図表レンダリングなどの分岐ロジックを示します。

開く →