Skip to content

フロントエンド概要

N.E.K.O. のフロントエンドは、従来のサーバーレンダリングページ、React チャットウィンドウコンポーネント、Vue プラグイン管理ダッシュボードの3層で構成されています。

アーキテクチャ

レイヤー技術場所
メインUIページVanilla JS + Jinja2 テンプレートstatic/ + templates/
チャットウィンドウReact 18 + TypeScriptfrontend/react-neko-chat/
プラグインマネージャーVue 3 + Element Plusfrontend/plugin-manager/
Live2D レンダリングPixi.js + Live2D Cubism SDKstatic/
VRM レンダリングThree.js + @pixiv/three-vrmstatic/

従来のフロントエンド(static/ + templates/)

メインUIは vanilla JavaScript と Jinja2 HTML テンプレートで構築されています。

static/
├── app.js                    # メインアプリケーションロジック
├── theme-manager.js          # ダーク/ライトモード切り替え
├── css/                      # スタイルシート
├── js/                       # 機能別 JS モジュール
├── locales/                  # i18n JSON ファイル(en, zh-CN, zh-TW, ja, ko)
├── live2d-ui-*.js            # Live2D UI コンポーネント
├── vrm-ui-*.js               # VRM UI コンポーネント
└── react/neko-chat/          # React チャットウィンドウのビルド出力

チャットウィンドウ(React)

チャットウィンドウは IIFE ライブラリとしてビルドされ、メインページに埋め込まれます。

  • ソース: frontend/react-neko-chat/
  • ビルド出力: static/react/neko-chat/neko-chat-window.iife.js
  • グローバル変数: window.NekoChatWindow
  • 開発サーバー: npm run dev(ポート 5174)

グルーレイヤー static/app-react-chat-window.js が React コンポーネントを DOM に読み込んでマウントします。

プラグインマネージャー(Vue)

プラグインの管理、ログの表示、メトリクスの監視を行うスタンドアロンのダッシュボードです。

  • ソース: frontend/plugin-manager/
  • ビルド出力: frontend/plugin-manager/dist/
  • 配信パス: プラグインサーバー(ポート 48916)の /ui/
  • 開発サーバー: npm run dev(ポート 5173、プラグインサーバーへの API プロキシ)

主要な概念

  • ページ はサーバーサイドでレンダリングされる HTML テンプレートで、JavaScript モジュールを読み込みます
  • WebSocket はリアルタイムの音声/テキストチャットに使用されます(WebSocket プロトコル を参照)
  • REST API はすべての CRUD 操作に使用されます(API リファレンス を参照)
  • テーママネージャー は CSS 変数のオーバーライドによりダーク/ライトモードを管理します
  • i18n はクライアントサイドで適切なロケール JSON ファイルを読み込むことで処理されます

MIT ライセンスの下で公開。