LanChat(軽量リアルタイムチャット)

Web

概要

VenlanChat(リポジトリ名は LanChat)は、PHP と MySQL を用いて構築された軽量なリアルタイムチャットアプリです。公開チャットと1対1のプライベートチャットをサポートし、Markdown(Parsedown)によるレンダリングやフロントエンドでの安全なフィルタリング、コードハイライト、数学式レンダリング、画像やPDF/TXT/MD のプレビューなどを備えています。ユーザー登録やアバター管理、メッセージの返信・撤回、ユーザーごとの表示設定保存など実用的な機能が揃っており、個人ホスティングや小規模チームでの利用に向いています。

GitHub

リポジトリの統計情報

  • スター数: 17
  • フォーク数: 0
  • ウォッチャー数: 17
  • コミット数: 3
  • ファイル数: 33
  • メインの言語: PHP

主な特徴

  • 公開チャット(public_messages)とプライベートチャット(private_messages)を両方サポート
  • Markdown(Parsedown)+フロントエンドでのサニタイズによる安全な表示、コードハイライト・数式対応
  • 画像・PDF・テキストのアップロードとプレビュー、メッセージの返信・撤回機能
  • ユーザー登録、アバター、個別の表示設定保存。Docker化のためのドキュメントあり

技術的なポイント

LanChat はサーバーサイドに PHP、データ永続化に MySQL を採用したシンプル構成です。Markdown のレンダリングは後端で Parsedown を利用して行い、フロントエンド側でも出力を安全にフィルタリングする二重防御の設計が見られます。これにより、Markdown の利便性(テーブル、コードブロック、インライン書式)を保ちながら XSS 等の脆弱性を低減します。

メッセージのモデルは public_messages と private_messages で分離されており、公開チャットと1対1チャットの操作や履歴管理が明確に分かれています。メッセージには返信(リプライ)や撤回(削除)機能があり、フロントエンドの UI と合わせて操作性を高めています。ファイルアップロードは画像はそのまま表示、PDF/TXT/MD はプレビュー対応とし、チャットでのドキュメント共有をスムーズにしています。

ユーザーごとの外観設定や設定ファイルは data/settings_{user} のようなファイル保存形式も利用されており、DB とファイルの併用で柔軟な設定保持を可能にしています。リポジトリには DOCKER.md や .user.ini、.dockerignore など運用に関するファイルが含まれており、ローカルやコンテナ環境でのデプロイを想定した配慮がなされています。さらに、ドキュメント内にあるスクリーンショット(docs/images)からはモダンでシンプルなフロントエンドUIが確認でき、フロントエンド側でのレンダリング整形やサニタイズ処理も組み込まれていることが推察できます。

拡張性の観点では、PHP ベースのため既存の LAMP 環境へ組み込みやすく、Parsedown やフロントのレンダリングライブラリを差し替えることで機能追加(リアルタイム性の強化やWebSocket導入、外部認証連携など)が比較的容易です。なお、リアルタイム更新の具体的な実装(長輪講・ポーリング・WebSocket 等)はコードを参照する必要がありますが、軽量性を重視した設計思想が随所に見られます。

プロジェクトの構成

主要なファイルとディレクトリ:

  • .dockerignore: file
  • .gitignore: file
  • .user.ini: file
  • CLAUDE.md: file
  • DOCKER.md: file

その他の主な要素(抜粋説明):

  • docs/images/: アプリのスクリーンショットやドキュメント画像
  • src/ または public/(推定): フロントエンドとバックエンドのエントリ(リクエスト処理、テンプレート)
  • data/settings_{user}: ユーザーごとの表示設定ファイル(README に言及あり)
  • SQL スキーマ(ファイル名は不明): public_messages / private_messages のテーブル定義を含む
  • README.md: 機能概要とスクリーンショット、基本的な使い方の説明

…他 28 ファイル

まとめ

軽量で実用的な PHP+MySQL ベースのチャットで、自ホストやカスタマイズ導入に適した設計です。

リポジトリ情報:

READMEの抜粋:

VenlanChat

VenlanChat 是一个基于 PHP + MySQL 的轻量实时聊天室,包含公共聊天与私聊两种模式,支持 Markdown 渲染、代码高亮、数学公式与文件上传预览等能力。

界面展示

image-20260210182342502

image-20260210182411801

image-20260210182457273

功能概览

  • 用户注册、登录、头像
  • 公共聊天(public_messages
  • 私聊(private_messages
  • 消息回复、撤回
  • Markdown 渲染(后端 Parsedown + 前端安全过滤)
  • 文件上传(图片直显;pdf/txt/md 支持预览)
  • 用户外观设置(保存在 `data/settings_{u…)