1
0
mirror of https://github.com/misskey-dev/misskey.git synced 2026-05-14 00:35:52 +02:00
Files
misskey/.claude/docs/architecture.md
2026-05-12 17:56:06 +09:00

3.2 KiB

アーキテクチャ概要

モノレポ構成 (pnpm workspaces)

pnpm workspace の正は pnpm-workspace.yaml で、以下 11 パッケージと、packages/misskey-js 内の sub-workspace packages/misskey-js/generator (型生成用の内部ジェネレータ。直接編集しない) で構成される。package.jsonworkspaces 配列も併記しているが、実体は pnpm-workspace.yaml が読まれる:

パッケージ 役割
packages/backend NestJS 11 + Fastify 5 + TypeORM 0.3 (PostgreSQL) + Redis。HTTP/WebSocket/ActivityPub サーバー本体。
packages/frontend Vue 3.5 + Vite。Web クライアント本体。
packages/frontend-embed 埋め込み専用ビュー (ノート単体プレビュー等)。
packages/frontend-shared frontend と frontend-embed で共有するユーティリティ・コンポーネント。
packages/frontend-builder フロントエンドビルド支援 (Vite plugin など)。
packages/sw Service Worker。
packages/misskey-js JS/TS クライアント SDK (MIT サブパッケージ)。src/autogen/ 配下のみ backend の OpenAPI から pnpm build-misskey-js-with-types で自動生成され、それ以外 (src/index.ts / src/api.ts 等) は手書き保守する。autogen 配下を直接編集しないこと。
packages/misskey-reversi 内蔵リバーシゲームのロジック。
packages/misskey-bubble-game 内蔵バブルゲームのロジック。
packages/i18n locales 読み込み/型生成のサポート。
packages/icons-subsetter アイコンのサブセット化ツール。

その他に packages/shared (workspaces には含まれないが共有ファイル置き場) もある。

重要な依存関係

frontend ── misskey-js (auto-generated) ── backend (OpenAPI)
                ▲
                └── frontend-embed, sw も依存
  • backend の API (meta / paramDef / response) を変更したら 必ず pnpm build-misskey-js-with-types を実行し、misskey-js の生成物を更新する。忘れると CI の check-misskey-js-autogen ジョブが落ちる。

ビルドツール

  • Backend: rolldown (Rust 製・Rollup 互換 API のバンドラ) でバンドル。型チェックは tsgo (TypeScript native preview)。
  • Frontend: Vite。型チェックは vue-tsc
  • Lint: ESLint 9 (Flat Config) + @misskey-dev/eslint-plugin

国際化

  • locales/ 直下に 40 言語の YAML (ja-JP.yml + 他 39 言語)。
  • ja-JP.yml のみ手動編集可 (Crowdin 経由で他言語へ自動配信)。
  • フロントエンドからの参照は引数なしか引数ありかで使い分ける。詳細は frontend.md

ライセンス

リポジトリ本体は AGPL-3.0-only。AGPL-3.0-only 管轄かつ SPDX CI 対象ディレクトリ の新規 .ts / .js / .cjs / .mjs / .vue / .scss / .html ファイルには冒頭に SPDX ヘッダー必須。packages/misskey-js は MIT サブパッケージなので AGPL ヘッダーを一律に付けない。条件と除外の詳細は AGENTS.md §1 参照。