atlas.yaml
# =============================================================================
# ATLAS Configuration File
# =============================================================================
# このファイルはプロジェクトの技術選定を記録し、
# 開発チームとClaude Codeが参照するための設定ファイルです。
#
# 配置場所: プロジェクトルート または .atlas/atlas.yaml
# =============================================================================
# ATLAS Framework Version
atlas_version: "1.0"
# -----------------------------------------------------------------------------
# Project Identity
# -----------------------------------------------------------------------------
project:
name: "ECサイトリニューアル"
description: "既存ECサイトのNext.js移行プロジェクト"
created_at: "2025-01-29"
updated_at: "2025-01-29"
owner: "tech-lead@example.com"
# -----------------------------------------------------------------------------
# Project Classification
# -----------------------------------------------------------------------------
classification:
# アーキタイプ(Part 1参照)
# A1_STATIC_PRESENCE | A2_CAMPAIGN | A3_CONSUMER_APP |
# A4_BUSINESS_SAAS | A5_MARKETPLACE | A6_REALTIME | A7_AI_COMPUTE
primary_archetype: A5_MARKETPLACE
# 複合アーキタイプがある場合
secondary_archetypes:
- A3_CONSUMER_APP # 一般消費者向けUI
# スケールTier(Part 5参照)
# T1_MVP | T2_STARTUP | T3_GROWTH | T4_ENTERPRISE
tier: T3_GROWTH
# Tier判定の根拠
tier_rationale:
monthly_budget_usd: 2000
team_size: 8
devops_capability: intermediate # none | basic | intermediate | advanced
# -----------------------------------------------------------------------------
# Requirements(要件定義)
# -----------------------------------------------------------------------------
requirements:
# トラフィック・スケール
scale:
expected_mau: 50000
peak_concurrent_users: 5000
monthly_bandwidth_gb: 800
# 機能要件
features:
realtime: false # WebSocket/SSE必要か
background_processing: heavy # none | light | medium | heavy
file_upload: true # ファイルアップロード機能
file_upload_max_size_mb: 50 # 最大ファイルサイズ
payment: true # 決済機能
payment_regions: # 決済対象地域
- JP
- US
multi_tenant: false # マルチテナント
# 非機能要件
non_functional:
availability_sla: "99.9%"
response_time_p95_ms: 500
data_retention_days: 2555 # 約7年
# セキュリティ・コンプライアンス
compliance:
required:
- HTTPS
- RATE_LIMITING
- WAF
optional:
- SOC2
regulations:
- 個人情報保護法
- 特定商取引法
# -----------------------------------------------------------------------------
# Technology Stack(選定結果)
# -----------------------------------------------------------------------------
stack:
# Compute Layer
compute:
category: CONTAINER_PAAS # 技術カテゴリ
selected: railway # 選定技術
rationale: "WebSocket不要だがWorker常駐が必要。コスト予測性重視。"
alternatives_considered:
- name: vercel
rejected_reason: "バックグラウンド処理の制約"
- name: aws_sst
rejected_reason: "現時点ではオーバースペック"
# Database Layer
database:
primary:
category: SERVERLESS_POSTGRES
selected: neon
rationale: "ブランチング機能で開発効率化。スケール対応。"
connection_pooler: true # コネクションプーラー使用
cache:
category: REDIS
selected: upstash_redis
rationale: "セッション、カート情報のキャッシュ"
search:
category: SEARCH_ENGINE
selected: meilisearch # 商品検索用
rationale: "日本語対応、セルフホスト可能"
# Authentication Layer
auth:
category: DX_FIRST_AUTH
selected: clerk
rationale: "実装速度重視。MAU 50Kまでは許容コスト。"
features_used:
- email_password
- social_login
- session_management
sso_required: false
# Background Processing Layer
worker:
category: DURABLE_WORKFLOW
selected: trigger_dev
rationale: "60秒超の処理あり(画像処理、レポート生成)"
job_types:
- name: image_processing
timeout_seconds: 300
priority: high
- name: daily_report
timeout_seconds: 1800
priority: low
schedule: "0 3 * * *" # 毎日3時
- name: order_notification
timeout_seconds: 30
priority: critical
# Payment Layer
payment:
category: PAYMENT_PROCESSOR
selected: stripe
rationale: "国内中心、税務体制あり。手数料最適化。"
features_used:
- checkout
- subscriptions
- invoicing
# Storage Layer
storage:
category: OBJECT_STORAGE
selected: cloudflare_r2
rationale: "帯域無料。商品画像・ユーザーアップロード用。"
# CDN Layer
cdn:
category: EDGE_CDN
selected: cloudflare
rationale: "R2との統合。WAF機能。"
# Monitoring Layer
monitoring:
apm:
selected: sentry
rationale: "エラートラッキング、パフォーマンス監視"
logs:
selected: axiom
rationale: "コスト効率、構造化ログ対応"
uptime:
selected: betterstack
rationale: "アラート、ステータスページ"
# -----------------------------------------------------------------------------
# Anti-Pattern Checks(アンチパターンチェック結果)
# -----------------------------------------------------------------------------
antipattern_checks:
# 各アンチパターンIDと対応状況
- id: AP-C1
name: "Serverless + 常駐Worker"
status: NOT_APPLICABLE # PASSED | FAILED | MITIGATED | NOT_APPLICABLE
note: "Container PaaS選択により該当なし"
- id: AP-C2
name: "Serverless + 長時間処理"
status: MITIGATED
note: "Trigger.devで外部化"
- id: AP-D1
name: "Serverless + 標準DB接続"
status: PASSED
note: "Neonのコネクションプーラー使用"
- id: AP-S1
name: "公開API + レート制限なし"
status: PASSED
note: "Cloudflare WAF + API Rate Limiting設定済み"
- id: AP-S2
name: "直接ファイルアップロード"
status: MITIGATED
note: "R2 Presigned URL使用"
- id: AP-$1
name: "従量課金 + 上限なし"
status: PASSED
note: "Railway固定プラン、Neon Spend Limit設定"
# -----------------------------------------------------------------------------
# Exit Strategy(移行戦略)
# -----------------------------------------------------------------------------
exit_strategy:
next_tier: T4_ENTERPRISE
migration_triggers:
- condition: "MAU > 100,000"
action: "Auth0移行検討"
- condition: "月額コスト > $5,000"
action: "AWS (SST)移行検討"
- condition: "SOC2認証必要"
action: "インフラ全体見直し"
lock_in_assessment:
- component: clerk
risk: medium
mitigation: "NextAuth.jsへの移行パス確保"
- component: neon
risk: low
mitigation: "標準PostgreSQL互換"
- component: trigger_dev
risk: medium
mitigation: "Temporal移行可能な設計"
migration_readiness:
dockerfile_exists: true
iac_implemented: false # Terraform/SST等
ci_cd_platform_agnostic: true
# -----------------------------------------------------------------------------
# Review Schedule(再評価スケジュール)
# -----------------------------------------------------------------------------
review:
next_review_date: "2025-07-01"
review_triggers:
- "月額コストが$3,000超過"
- "レスポンスP95が1秒超過"
- "チーム規模が15人超過"
- "SOC2認証要件発生"
history:
- date: "2025-01-29"
changes: "初期選定"
reviewer: "tech-lead@example.com"
# -----------------------------------------------------------------------------
# Claude Code Instructions(AI向け指示)
# -----------------------------------------------------------------------------
claude_instructions:
# 実装時に参照すべき注意点
implementation_notes:
- "Neon接続時は必ずコネクションプーラーURL使用"
- "ファイルアップロードはPresigned URL経由"
- "60秒超の処理はTrigger.devにオフロード"
- "環境変数はVercel/Railway形式で統一"
# 禁止事項
prohibited:
- "BullMQ/Redis Workerの直接実装"
- "API Routeでの長時間処理"
- "クライアントへのシークレット露出"
# 推奨パターン
recommended_patterns:
- "Server Actionsでのデータ変更"
- "Suspenseによる段階的表示"
- "エラーバウンダリの適切な配置"