mirror of
https://github.com/misskey-dev/misskey.git
synced 2026-05-14 00:35:52 +02:00
3.2 KiB
3.2 KiB
アーキテクチャ概要
モノレポ構成 (pnpm workspaces)
pnpm workspace の正は pnpm-workspace.yaml で、以下 11 パッケージと、packages/misskey-js 内の sub-workspace packages/misskey-js/generator (型生成用の内部ジェネレータ。直接編集しない) で構成される。package.json の workspaces 配列も併記しているが、実体は 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 参照。