Upload2Door

Handover

明日引き継いでも動く。属人化ゼロ設計。

リポジトリ構成

Turborepo Monorepo

upload2door/
├── apps/
│   ├── web/           # 顧客向けNext.js (Pages Router)
│   ├── studio/        # 事務所向けNext.js (App Router)
│   ├── factory/       # 工場向けNext.js (App Router)
│   └── api/           # Cloudflare Workers (Hono)
├── packages/
│   ├── ui/            # 共通UIコンポーネント (shadcn/ui)
│   ├── db/            # D1スキーマ + Drizzle ORM
│   ├── validators/    # Zodバリデーション
│   ├── types/         # 共通TypeScript型定義
│   └── config/        # 共通設定 (ESLint, TSConfig)
├── docs/
│   ├── SSOT/          # 仕様書 (Single Source of Truth)
│   ├── ADR/           # アーキテクチャ決定記録
│   └── API/           # OpenAPI仕様書
├── .github/
│   └── workflows/     # CI/CD設定
├── turbo.json
└── package.json

SSOT(Single Source of Truth)

5ファイルで仕様を完全定義

00_project_overview.md

プロジェクト概要、スコープ、制約

01_system_architecture.md

技術選定、構成図、インフラ

02_user_flows.md

画面遷移、ユーザーストーリー

03_data_contracts.md

APIスキーマ、DBテーブル定義

04_implementation_notes.md

実装詳細、トラブルシュート

コードよりドキュメントを先に読む

新しいメンバーは5ファイル読むだけでシステム全体を理解可能

ADR(Architecture Decision Records)

なぜそう決めたかを記録

ADR#タイトル決定
001コンピューティング選定Cloudflare Workers(Cold Start 0ms)
002ストレージ分離戦略PII→Firestore、画像→R2、業務→D1
003認証方式Firebase Auth(パスワードレス)
004決済プロバイダStripe + Paidy(掛け売り対応)
005モノレポ構成Turborepo(Vercel製)
006ORMの選択Drizzle ORM(軽量 + Edge対応)

開発環境セットアップ

5分で開発開始

# 1. リポジトリクローン
git clone https://github.com/your-org/upload2door.git
cd upload2door

# 2. 依存関係インストール
pnpm install

# 3. 環境変数設定
cp .env.example .env.local
# → 最小限の設定のみ(本番シークレットは不要)

# 4. 開発サーバー起動
pnpm dev

# → http://localhost:3000 で動作確認

Wrangler

Workers/R2/D1ローカルエミュレート

Firebase Emulator

Auth/Firestoreローカル実行

Stripe CLI

Webhook開発・テスト

コーディング規約

自動化されたルール
ESLint- コード品質チェック
Prettier- フォーマット統一
TypeScript- strict mode必須
Husky- コミット前自動チェック
lint-staged- 変更ファイルのみ検証
命名規則
ファイル名kebab-case.ts
コンポーネントPascalCase.tsx
関数camelCase()
定数UPPER_SNAKE_CASE
PascalCase

Git運用

ブランチ戦略
main → 本番環境
develop → 開発環境
feature/* → 機能開発
hotfix/* → 緊急修正
コミットメッセージ
feat: 新機能
fix: バグ修正
refactor: リファクタリング
docs: ドキュメント
chore: 雑務

属人化ゼロの実現

ドキュメント先行

  • SSOT形式で仕様を一元管理
  • ADRで決定理由を記録
  • OpenAPIで契約を明文化

自動化徹底

  • CI/CDで手動作業を排除
  • IaCでインフラをコード化
  • テストで動作を保証

知識共有

  • PRレビュー必須
  • 週次技術共有会
  • 障害時ポストモーテム

サポート体制

フェーズ対応内容連絡手段
開発中技術相談、設計レビュー、ペアプロSlack / 週次MTG
リリース後3ヶ月バグ修正、機能追加サポートSlack / GitHub Issues
保守フェーズ緊急対応、定期アップデート相談メール / 月次MTG