このファイルは、このリポジトリでコードを扱う際にClaude Codeにガイダンスを提供します。
Mountixは、クリーンアーキテクチャパターンを使用してRustで構築された日本の山岳データAPIです。百名山データを含む山岳情報のRESTエンドポイントを提供し、MongoDBをデータストアとして使用しています。
- ビルド:
cargo build - 実行:
cargo run - チェック:
cargo check - フォーマット:
cargo fmt - リント:
cargo clippy - テスト:
cargo test - カバレッジ:
cargo llvm-cov
sample.envを.envにコピーして設定:
DATABASE_URLにMongoDB接続文字列DATABASE_NAME=mountix_db- サーバーのホスト/ポート設定
開発環境(devcontainer)の場合、起動時にマイグレーションが完了します。
cd ./migrations/
./migrate.sh
cd ../インフラストラクチャはRenderを採用しています。
このプロジェクトは依存性逆転を伴う階層化クリーンアーキテクチャに従います:
-
mountix-driver (Controller/Presentation)
- Axum Webフレームワークのセットアップとルーティング
- HTTPハンドラーとJSONシリアライゼーション
- エントリーポイント:
startup/mod.rsにサーバー設定 - ルート:
/api/v1/mountains,/api/v1/hc(ヘルスチェック)
-
mountix-app (Use Case/Application)
- ビジネスロジックとアプリケーションワークフロー
- kernelとadapterレイヤー間の調整
- ユースケース実装を含む
-
mountix-kernel (Domain/Core)
- ドメインモデルとビジネスルール
- リポジトリトレイト定義(adapterで実装)
- 外部依存性のないコアビジネスロジック
-
mountix-adapter (Infrastructure)
- MongoDB永続化実装
- 外部サービス統合
- kernelのリポジトリトレイトを実装
- 上位レイヤーは下位レイヤーに依存可能
- 下位レイヤーは上位レイヤーに依存不可
- kernelとadapterはDIP(依存性逆転の原則)を使用
- Webフレームワーク: Axum with tokio async runtime
- データベース: MongoDB(
DATABASE_URL経由で接続) - ログ: tracingによるJSON出力
- 環境: dotenvy(.envファイル読み込み)
- CORS: API アクセス用に設定済み
GET /api/v1/mountains- フィルタリング付き山岳リストGET /api/v1/mountains/{id}- 特定の山岳取得GET /api/v1/mountains/{id}/surroundings- 周辺の山岳取得GET /api/v1/mountains/geosearch- 地理的検索GET /api/v1/hc- ヘルスチェックGET /api/v1/hc/mongo- MongoDBヘルスチェック
- 4つのクレートからなるRustワークスペースを使用
- 日本の山岳データドメイン(百名山)に従う
- 実行前に環境設定が必要
- クラウドデプロイにはRenderとMongoDB Atlasを推奨