# =============================================================================
# project-brief.yaml — SINGLE REFERENCE EXAMPLE for cursor_gen
# Copy to your Flutter repo root, edit values, then: cursor_gen
# Schema / IDE hints: flutter-cursor-templates/generator/brief-schema.json
# =============================================================================
#
# Each section below lists ALLOWED VALUES in comments. Pick ONE value per field
# (unless the field is a list). Invalid combinations may get validator warnings
# (e.g. getx_nav without getx).
#
# =============================================================================

# -----------------------------------------------------------------------------
# Template pin (Pillar 1) — bump when you intentionally upgrade template output
# -----------------------------------------------------------------------------
cursor_templates_version: "1.0.4"

# -----------------------------------------------------------------------------
# project — identity and rough size (affects rule tone / scaffolding hints)
# -----------------------------------------------------------------------------
# scale: small | medium | large
project:
  name: "Acme Shop"
  package: "com.example.acme_shop"
  description: "Reference e-commerce app — replace with your product summary"
  scale: "large"

# -----------------------------------------------------------------------------
# stack — tooling and architecture (drives which .cursor/rules/*.mdc you get)
# -----------------------------------------------------------------------------
# state_management: bloc | riverpod | getx | hooks_riverpod
# routing:          gorouter | getx_nav | auto_route
#   (getx_nav is intended with state_management: getx)
# architecture:     clean | feature_first | mvvm | mvc | layered
# backend:          firebase | supabase | rest  — or combine with +  e.g.:
#   firebase+rest | supabase+rest | firebase+supabase (split on +)
# auth:             firebase_auth | supabase_auth | jwt_rest | oauth2 | none
# platforms:        subset of [ ios, android, web, desktop ]
# codegen:          subset of [ freezed, json_serializable, injectable, retrofit ]
stack:
  state_management: "bloc"
  routing: "gorouter"
  architecture: "clean"
  backend: "firebase+rest"
  auth: "firebase_auth"
  platforms: ["ios", "android", "web", "desktop"]
  codegen: ["freezed", "json_serializable", "injectable", "retrofit"]

# -----------------------------------------------------------------------------
# environments
# -----------------------------------------------------------------------------
# cicd: codemagic | github_actions | fastlane | none
# flavors: any string names your app uses (e.g. dev, staging, prod)
environments:
  flavors: ["dev", "staging", "prod"]
  cicd: "github_actions"

# -----------------------------------------------------------------------------
# testing
# -----------------------------------------------------------------------------
# depth:    unit_widget | integration | e2e | full
# e2e_tool: patrol | maestro
testing:
  depth: "full"
  e2e_tool: "patrol"

# -----------------------------------------------------------------------------
# design — where UI truth lives (referenced in generated project-context rules)
# -----------------------------------------------------------------------------
# design.source (validator): figma_mcp | figma_manual | native_ref | html_ref | none
# figma_url: design file URL when using Figma; can be "" if source is none / native_ref
design:
  source: "figma_mcp"
  figma_url: "https://www.figma.com/design/REPLACE_ME/Acme-Shop"

# -----------------------------------------------------------------------------
# api_docs — machine-readable API contract for agents
# -----------------------------------------------------------------------------
# format: openapi | postman | markdown | none
# path:   repo-relative path to spec, or "" if none
api_docs:
  format: "openapi"
  path: "docs/api/openapi.yaml"

# -----------------------------------------------------------------------------
# references — other code the team treats as source of truth
# -----------------------------------------------------------------------------
# repos:       list of git URLs (can be empty [])
# local_paths: monorepo packages, e.g. [ "packages/design_system" ]
references:
  repos:
    - "https://github.com/example/acme-design-tokens"
  local_paths: []

# -----------------------------------------------------------------------------
# app_context — themes & RBAC (mirrored to .cursor/cursor-gen-metadata.json)
# -----------------------------------------------------------------------------
# theme_variants: subset of [ light, dark, high_contrast ]; omit section or use [] → loader defaults to [light, dark]
# roles_enabled / role_names: use named roles when the app has RBAC
# app_context:
#   theme_variants: ["light", "dark", "high_contrast"]
#   roles_enabled: true
#   role_names: ["customer", "merchant", "admin"]

features:
  # modules: high-level feature areas in YOUR lib/ (names are project-specific)
  modules: ["auth", "home", "catalog", "cart", "checkout", "profile", "orders"]
  # special: optional capabilities — include only what you use
  #   realtime | push_notifications | deep_linking | offline_first
  special: ["realtime", "push_notifications", "deep_linking", "offline_first"]

# -----------------------------------------------------------------------------
# localization
# -----------------------------------------------------------------------------
localization:
  enabled: true
  locales: ["en", "es", "fr"]

# -----------------------------------------------------------------------------
# Telemetry (Pillar 6) — local-only generation / usage log under .cursor/
# -----------------------------------------------------------------------------
telemetry_opt_in: true

# =============================================================================
# QUICK SWAP CHEATSHEET (same keys; replace values only)
# =============================================================================
# Riverpod + feature-first + Supabase:
#   state_management: riverpod
#   routing: gorouter
#   architecture: feature_first
#   backend: supabase
#   auth: supabase_auth
#
# GetX + MVC + REST (also enables migration-agent in templates):
#   state_management: getx
#   routing: getx_nav
#   architecture: mvc
#   backend: rest
#   auth: jwt_rest
# =============================================================================
