Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
46 commits
Select commit Hold shift + click to select a range
90f4824
add: zodの導入とバリデーションスキーマの追加
kuu13580 Dec 24, 2025
8e2fca9
add: 共通のAGENTS.mdを追加
kuu13580 Dec 24, 2025
18ccc8f
add: TripのCRUD処理を仮実装(axios, swr含む)
kuu13580 Dec 24, 2025
6e5d5be
fix: serenaにprojectを渡し忘れていたため修正
kuu13580 Dec 26, 2025
1fba11f
add: pages関連のCRUD処理追加
kuu13580 Jan 1, 2026
a975754
add: BlockのCRUDs処理実装
kuu13580 Jan 1, 2026
3102a52
add: Tripページ実装
kuu13580 Jan 1, 2026
47c5351
change: 型変更に対応
kuu13580 Jan 1, 2026
4010d2e
add: endTime null
kuu13580 Jan 1, 2026
f10da69
add: URLIDからtripを取得
kuu13580 Jan 1, 2026
e2945f9
docs: hooksのじっっそう方針ドキュメント更新
kuu13580 Jan 1, 2026
dbe69d7
refactor: details -> detail
kuu13580 Jan 1, 2026
f4e0eed
型定義方針変更
kuu13580 Jan 25, 2026
d0285d9
tmp: Preview表示時のモックデータ返却
kuu13580 Jan 1, 2026
6f324fa
add: VITE_APP_ENV追加
kuu13580 Jan 1, 2026
0e2360d
add: AGENTS.mdの更新
kuu13580 Jan 2, 2026
7351720
add: type-checkコマンド追加
kuu13580 Jan 3, 2026
7156960
fix: TripPageを分離
kuu13580 Jan 3, 2026
e499505
add: 仮の一覧ページ
kuu13580 Jan 25, 2026
234b9e9
tmp: 編集中移動ブロック仮実装
kuu13580 Jan 3, 2026
3f902be
add: 編集モード画面実装
kuu13580 Jan 3, 2026
c2241a1
add: モード切り替えの実装
kuu13580 Jan 3, 2026
6acf958
fix: Headerの表示挙動解消
kuu13580 Jan 6, 2026
ba44317
fix: スケジュールブロックレイアウト調整
kuu13580 Jan 7, 2026
2e4a312
delete: Serenaを解雇
kuu13580 Jan 7, 2026
45da24f
add: ripgrepインストール
kuu13580 Jan 7, 2026
57bd5ae
add: AGENTS.mdの行動規範を更新
kuu13580 Jan 7, 2026
2155f8f
add: allowed toolsを追加(gemini)
kuu13580 Jan 7, 2026
2fa0861
fix: VITE_API_BASE_URLを適切なものに変更
kuu13580 Jan 20, 2026
8ebe964
change: Claude Code用セットアップ
kuu13580 Jan 20, 2026
7594624
add: DBへの変更反映を実装
kuu13580 Jan 25, 2026
cf90ae8
fix: TimeZone問題 UTCとして一旦すべて扱う
kuu13580 Jan 26, 2026
5ab4a88
add: 閲覧モード回帰時にスクロールをトップに戻す
kuu13580 Jan 27, 2026
d7c154c
lint
kuu13580 Jan 27, 2026
f208ee6
add: Page切替時に最初のブロックへスクロールする
kuu13580 Jan 27, 2026
8ee7df9
add: ロゴクリックでホームに戻る
kuu13580 Jan 27, 2026
22d6bb9
add: Headerのボタンアイコン追加・挙動改善
kuu13580 Jan 30, 2026
8ffcab2
change: Gridレイアウトでヘッダーのボタン中央を固定
kuu13580 Jan 30, 2026
102f291
add: 追加ダイアログ
kuu13580 Feb 1, 2026
68539bc
add: AlertDialogActionのvariant指定可能にする
kuu13580 Feb 1, 2026
255d809
add: ブロック編集ダイアログ
kuu13580 Feb 1, 2026
577fb4b
add: ローディング中画面追加
kuu13580 Feb 1, 2026
4c9aa55
add: ページ情報変更ダイアログ
kuu13580 Feb 1, 2026
c59696c
add: ページ情報追加ダイアログ
kuu13580 Feb 1, 2026
b080795
change: fixを実行させるようAgent追記
kuu13580 Feb 1, 2026
168923f
add: titleとfavicon変更
kuu13580 Feb 1, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .claude/commands/create-shadcn-component.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ shadcn/uiコンポーネント「$ARGUMENTS」を追加し、包括的なStorybo
- AllVariantsストーリーで全パターンを一覧表示する形式で作成

3. **コード品質の確保**:
- `npm run type-check` を実行して型エラーがないか確認
- `npm run format:fix` を実行してフォーマットを修正
- `npm run lint:fix` を実行してリンターエラーを修正
- コマンドはプロジェクトルートディレクトリから実行する
Expand Down
27 changes: 26 additions & 1 deletion server/CLAUDE.md → .claude/rules/backend.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,13 @@
---
paths:
- "server/**/*"
- "backend/**/*"
---

# バックエンド規約

## 技術スタック

- FastAPI 0.115.x + Python 3.13 + Uvicorn
- PostgreSQL
- Firebase Authentication
Expand Down Expand Up @@ -29,6 +36,7 @@ server/
```

## 命名規則

- **変数・関数**: snake_case (`get_user_data`)
- **クラス**: PascalCase (`TripService`)
- **定数**: UPPER_SNAKE_CASE (`DATABASE_URL`)
Expand All @@ -37,54 +45,64 @@ server/
## 開発ガイドライン

### 1. APIエンドポイント設計

- RESTfulな設計を採用
- エンドポイントパス: `/api/v1/{resource}`
- HTTPメソッド適切な使用(GET, POST, PUT, DELETE, PATCH)
- レスポンス形式は一貫性を保つ

### 2. データベース操作

- SQLAlchemyのORM使用
- モデル定義は`models.py`に集約
- CRUD操作は`cruds/`ディレクトリに分離
- トランザクション管理を適切に実装

### 3. スキーマ定義

- Pydanticモデルを`schemas.py`で管理
- リクエスト/レスポンススキーマを明確に分離
- バリデーション規則を適切に設定

### 4. エラーハンドリング

- カスタム例外は`errors.py`で定義
- HTTPステータスコードを適切に使用
- エラーメッセージは統一されたフォーマット

### 5. 認証・認可

- Firebase Authenticationトークン検証
- デコレーターまたはミドルウェアで認証実装
- ユーザー権限チェック機能

### 6. マイグレーション管理

- Alembicを使用したスキーマ変更管理
- マイグレーションファイルは意味のある名前を付与
- 本番環境への適用前にステージング環境でテスト

### 7. テスト戦略

- pytest使用
- テストファイルは`test_`プレフィックス
- ユニットテスト、統合テストを実装
- テストデータベースは本番と分離

### 8. 環境設定

- 環境変数で設定管理
- `.env`ファイルでローカル開発設定
- 本番、ステージング、開発環境の設定分離

### 9. ログ設定

- 構造化ログを推奨
- ログレベル適切な設定(DEBUG, INFO, WARNING, ERROR)
- 機密情報のログ出力禁止

### 10. パフォーマンス考慮事項

- データベースクエリ最適化
- 適切なインデックス設定
- キャッシュ戦略の検討
Expand All @@ -93,6 +111,7 @@ server/
## コーディング規約

### インポート順序

```python
# 1. 標準ライブラリ
import os
Expand All @@ -108,6 +127,7 @@ from app.models import User
```

### 関数・クラス定義

```python
# 関数定義例
async def get_user_by_id(
Expand All @@ -130,6 +150,7 @@ class UserService:
```

### エラーハンドリングパターン

```python
from fastapi import HTTPException, status

Expand All @@ -155,6 +176,7 @@ async def get_user_endpoint(user_id: int, db: Session = Depends(get_db)):
```

## セキュリティ要件

- SQLインジェクション対策(ORMパラメータ化クエリ使用)
- CORS設定適切な実装
- 入力値検証の徹底
Expand All @@ -164,6 +186,7 @@ async def get_user_endpoint(user_id: int, db: Session = Depends(get_db)):
## AI開発サポート情報

### よく使用するコマンド

```bash
# 開発サーバー起動
uvicorn app.main:app --reload --host 0.0.0.0 --port 8000
Expand All @@ -182,18 +205,20 @@ uv lock
```

### 開発時の注意点

- 新機能開発時は必ずテストを作成
- データベーススキーマ変更時はマイグレーション作成
- APIドキュメントは自動生成される(FastAPI Swagger UI)
- 環境変数の変更時は`.env.example`も更新

### デバッグ情報

- FastAPI自動ドキュメント: `http://localhost:8000/docs`
- 代替ドキュメント: `http://localhost:8000/redoc`

### パッケージ管理

- uv使用(Pythonパッケージマネージャー)
- 新パッケージ追加: `uv add package_name`
- 開発用パッケージ: `uv add --dev package_name`
- 依存関係確認: `uv tree`

Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
---
paths:
- "frontend/src/components/**/*"
---

# コンポーネント構成規約

## 1コンポーネント1ファイル原則
Expand All @@ -8,5 +13,5 @@

## Storybookファイル

- 各コンポーネントに対応する`.stories.tsx`ファイルを作成
- 各コンポーネントに対応する`.stories.tsx`ファイルを同ディレクトリに作成
- ディレクトリごとに統合した`.stories.tsx`ファイル作成も可能
29 changes: 29 additions & 0 deletions .claude/rules/frontend.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
---
paths:
- "frontend/src/**/*.ts"
- "frontend/src/**/*.tsx"
- "src/**/*.ts"
- "src/**/*.tsx"
---

# フロントエンド開発規約

## コンポーネント

- React関数コンポーネントを使用(クラスコンポーネント禁止)
- named exportを推奨(default exportは設定ファイルやライブラリ慣習のみ)

## パフォーマンス

- useMemo/useCallbackで不要な再レンダリングを防止
- useEffectには必ずクリーンアップ関数を実装

## 型

- TypeScript型注釈を明示的に記述
- any型は原則禁止

## スタイル

- Tailwind CSSを使用
- Shadcn/uiコンポーネントを活用
22 changes: 22 additions & 0 deletions .claude/rules/styleguide.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
---
paths:
- "**/*"
---

# tabi-share コーディングスタイルガイド

## はじめに

このスタイルガイドは、tabi-shareで開発されるすべてのコードに適用されるコーディング規約を定めるものです。
このガイドの目的は、コードの品質を向上させ、開発プロセス全体を円滑にすることです。

## 基本原則

- **可読性**: コードは、チームの誰もが容易に理解できるよう記述します
- **保守性**: コードは、将来の修正や機能拡張が容易に行えるように設計します
- **一貫性**: すべてのプロジェクトで一貫したスタイルを保つことで、共同作業を円滑にし、エラーを削減します
- **パフォーマンス**: 可読性を最優先としつつも、コードは効率的であるべきです

## 言語

- コードレビューは日本語で行います
6 changes: 6 additions & 0 deletions frontend/tests/CLAUDE.md → .claude/rules/tests.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,9 @@
---
paths:
- "frontend/tests/**/*"
- "tests/**/*"
---

# テスト環境 ナレッジベース

## テスト環境構成
Expand Down
14 changes: 14 additions & 0 deletions .claude/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
{
"permissions": {
"allow": [
"Bash(ls:*)",
"Bash(cat:*)",
"Bash(find:*)",
"Bash(grep:*)",
"Bash(npm run:*)",
"Bash(git log:*)",
"Bash(git status)",
"Bash(git diff:*)"
]
}
}
6 changes: 5 additions & 1 deletion .devcontainer/postCreateCommand.sh
Original file line number Diff line number Diff line change
Expand Up @@ -42,11 +42,15 @@ sh ./scripts/setup_database.sh
# Claude Code
npm install -g @anthropic-ai/claude-code
uv tool install claude-monitor
claude mcp add serena -- uvx --from git+https://github.com/oraios/serena serena start-mcp-server --context ide-assistant --project $(pwd)

# Gemini CLI
npm install -g @google/gemini-cli
echo "🎉 All setup steps completed successfully!"

# Firebase CLI Tools
npm install -g firebase-tools

# AI検索用にripgrepをインストール
sudo apt-get update
sudo apt-get install -y ripgrep
echo "🔍 ripgrep installed for AI search functionality."
4 changes: 3 additions & 1 deletion .env
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,9 @@ DOTENV_PUBLIC_KEY="022fbf25544d683ec67c445c1f9eb07096854baf025ae54b47b7e45b5382c
# Viteアプリケーション用設定

# API接続先
VITE_API_BASE_URL=encrypted:BGnLC5zp6mn+Ctb/ecgpmIWMu8rhY+RkZ9MA9E3x9tkCeob1meLwpjvHUsl/o4DpICwhoJhppFREt/XrtcWEj7YF5PV/BJCtMxtFYpAxKlWubaRhkkekbBfcWVfRVwaIxq8uhXBYvkPIY6ZhT9Mql3HzHPYOhZk=
VITE_API_BASE_URL=encrypted:BDDp33MZSFGqtZtl6n76vdq+SeNI3S6DIoV6GTUzrxO59H0+wqPtraIv4MDzclLFeOl1Kw47Ndr0eiHq9z+/uCIgp5kawIYoRQiwesY1+SwJCvYqjmw+V5wJSFsKYZT3TCsGqmg8vCa8LmtOyqbitgO5R1RW1w==
# 環境を表す値(local, preview, staging, production)
VITE_APP_ENV="encrypted:BFLe7W/I/CgzUdCj7K0GybJyttRlL8jI/a2S4Th1gKWmykZl006ehn4Xtv5xBUMn/D8PjhxgS/9L3OeMQ/nlCdUUS48UMyF5OEsEOvnGFi0SgfZ+PDWqFJBt2Rht0lVA2tgIfuqv"

# ==================================
# バックエンド用 (server/.env)
Expand Down
19 changes: 14 additions & 5 deletions .gemini/settings.json
Original file line number Diff line number Diff line change
@@ -1,8 +1,17 @@
{
"mcpServers": {
"serena": {
"command": "uvx",
"args": ["--from", "git+https://github.com/oraios/serena", "serena", "start-mcp-server"]
}
"$schema": "https://raw.githubusercontent.com/google-gemini/gemini-cli/main/schemas/settings.schema.json",
"context": {
"fileName": "AGENTS.md"
},
"mcpServers": {},
"tools": {
"allowed": [
"run_shell_command(ls)",
"run_shell_command(grep)",
"run_shell_command(find)",
"run_shell_command(cat)",
"run_shell_command(npm run)",
"run_shell_command(git log)"
]
}
}
3 changes: 0 additions & 3 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -50,8 +50,5 @@ build/
logs/
*.log

# Serena MCP
.serena

# firebase
.firebase
51 changes: 51 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
# AGENTS.md

このファイルは、このリポジトリでコードを操作する際にAIコーディングエージェントにガイダンスを提供します。
日本語で回答するように設定してください。
また、コードにコメントを追加する際は、日本語を使用してください。ただし、コメントはコードから意図が読み取れない場合にのみ追記し、必要最低限に留めてください。

## プロジェクト概要

国内車旅行(主に温泉地巡り)の旅程計画を効率的に作成・共有・管理するWebアプリケーションです。ブロック式のUIを使用して、友人・家族との旅程を協力して編集できます。

## 要件定義書

[@docs/requirements.md](docs/requirements.md)

## 開発上の注意点

- ブロック式旅程管理がコアUXパターン
- 閲覧はログイン不要、編集はFirebase認証が必要
- リアルタイム協調編集は後勝ちルールで競合解決
- UIテキストと仕様書は日本語で記述

## 共通コーディング規約

[@docs/coding_standards.md](docs/coding_standards.md)

また、フロントエンドの実装では基本的にnamed exportを使用してください。ただし、設定ファイルやライブラリの慣習など、特別な理由がある場合はdefault exportも許容します。

## エージェントの行動規範

- **正確性の確保:** ユーザーからファイル名や行番号でコードの箇所を指摘された際は、自身の推測や過去の経験則に頼らず、必ず指定されたファイルを読み込むこと。その上で、指摘箇所がどの関数やクラスの範囲に属するかを厳密に解析し、事実に基づいて応答・作業を行うこと。思い込みによる判断は絶対に避ける。
- **指示への対応(厳守):** 文末が「?」で終わる質問や、「相談です」「どうすればいいですか」といった提案を求める記述がある場合は、**絶対にコードの書き換え(write_file, replace等)を行わないこと**。まずはテキストで回答・提案を行い、ユーザーから「実装してください」との同意を得てから初めて実装に着手すること。
- **実装方針の提案:** 実装の指示を受けたときは、まず一般的なアーキテクチャやベストプラクティスと比較する作業を行い、指示を受けた実装方針にデメリットがあるときは、ユーザーにメリット・デメリットとともに方針を修正しないか提案すること。
- **ファイル読み込み:** 「L1-L4」のように行数を指定してファイルを読み込むよう指示があった場合は、`read_file`ツールで`offset`と`limit`パラメーターを使用して読み込むこと。

## 開発コマンド

### リンター・フォーマッター・型チェック

```bash
# 型チェック
npm run type-check

# リンターエラーの自動修正&チェック(タスク完了後に実行)
npm run lint:fix

# フォーマットチェック
npm run format:check

# フォーマットの自動修正&チェック(タスク完了後に実行)
npm run format:fix
```
9 changes: 8 additions & 1 deletion CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,10 @@
このファイルは、このリポジトリでコードを操作する際にClaude Code (claude.ai/code) にガイダンスを提供します。
日本語で回答するように設定してください。

## 他のエージェント向けドキュメント

- [AGENTS.md](AGENTS.md) - AIコーディングエージェント向けのガイダンス

## プロジェクト概要

国内車旅行(主に温泉地巡り)の旅程計画を効率的に作成・共有・管理するWebアプリケーションです。ブロック式のUIを使用して、友人・家族との旅程を協力して編集できます。
Expand All @@ -24,9 +28,12 @@

## 開発コマンド

### リンター・フォーマッター
### リンター・フォーマッター・型チェック

```bash
# 型チェック
npm run type-check

# リンターチェック
npm run lint:check

Expand Down
1 change: 0 additions & 1 deletion biome.json
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,6 @@
}
},
"complexity": {
"noExcessiveCognitiveComplexity": "warn",
"noExtraBooleanCast": "error",
"noStaticOnlyClass": "error",
"noUselessCatch": "error",
Expand Down
Loading