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

48 lines
3.2 KiB
Markdown

# アーキテクチャ概要
## モノレポ構成 (pnpm workspaces)
pnpm workspace の正は [pnpm-workspace.yaml](../../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](./frontend.md#国際化-i18n)。
## ライセンス
リポジトリ本体は 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](../../AGENTS.md#1-spdx-ヘッダー必須) 参照。