コンテンツにスキップ

開発環境

必要なもの

  • Docker & Docker Compose

セットアップ

git clone https://github.com/nekonoverse/nekonoverse.git
cd nekonoverse

# 環境変数を設定
cat <<'EOF' > .env
DB_PASSWORD=dev-password
DOMAIN=localhost
SECRET_KEY=$(openssl rand -base64 32)
DEBUG=true
EOF

# 開発用 Compose ファイルをコピー
cp docker-compose.dev.yml.example docker-compose.dev.yml

# 起動
docker compose -f docker-compose.dev.yml up -d
  • バックエンド API: http://localhost:8000
  • フロントエンド: http://localhost:3000

バックエンドはソースマウント + --reload、フロントエンドは Vite のホットリロードで動作します。

管理者ユーザーの作成

docker compose -f docker-compose.dev.yml exec -it app python -m app.cli create-admin

コマンド一覧

バックエンド

# マイグレーション実行
docker compose -f docker-compose.dev.yml exec app alembic upgrade head

# テスト実行
docker compose -f docker-compose.dev.yml exec app python -m pytest tests/ -v

# Python パッケージ追加
docker compose -f docker-compose.dev.yml exec app pip install <package>

# ログ
docker compose -f docker-compose.dev.yml logs -f app

フロントエンド

# npm パッケージ追加
docker compose -f docker-compose.dev.yml exec frontend npm install <package>

# ログ
docker compose -f docker-compose.dev.yml logs -f frontend

node_modules

node_modules はコンテナ内の匿名ボリュームで管理されています。ホスト側の node_modules は使われません。npm コマンドは必ず docker compose exec frontend 経由で実行してください。

テスト

ユニットテスト

docker compose -f docker-compose.dev.yml exec app python -m pytest tests/ -v
  • テスト DB は nekonoverse_test として自動作成されます(tests/conftest.py
  • asyncio_mode = "auto"@pytest.mark.asyncio デコレータ不要
  • 主なフィクスチャ: db, app_client, authed_client, test_user, mock_valkey

連合 E2E テスト

2 つの nekonoverse インスタンスを立ち上げ、実際にアクティビティを交換するテスト。

docker compose -f docker-compose.federation.yml up -d --build --wait
docker compose -f docker-compose.federation.yml run --rm --no-deps test-runner

Docker Compose 構成

ファイル 用途
docker-compose.dev.yml.example 開発用テンプレート(ホットリロード、ソースマウント、ポート直接公開)
docker-compose.yml.example 本番用テンプレート TCP 構成(GHCR イメージ、nginx + Cloudflare Tunnel オプション)
docker-compose.prod.yml 本番用 UDS 構成(全サービス間 UDS、静的フロントエンド配信)— 推奨
docker-compose.e2e.yml フロントエンド E2E テスト用(CI)
docker-compose.federation.yml Neko↔Neko 連合テスト用(CI)
docker-compose.misskey-federation.yml Neko↔Misskey 連合テスト用(CI)

開発時は .example をコピーして使います。docker-compose.ymldocker-compose.dev.yml.gitignore 対象です。

Git ブランチ

ブランチ 用途
main 安定リリース。タグ付き (20260311-1, ...)
develop 開発ブランチ。push で unstable Docker イメージがビルドされる
# develop で作業 → main にマージ → タグ
git checkout main
git merge --no-ff develop
git tag <yyyymmdd-x>
git push origin main develop <yyyymmdd-x>