Skip to content

Architecture and Placement

  • [必須] feature code は apps/nuxt/app/features/<feature>/ に置き、Nuxt の役割別 directory に分散させない。
  • [必須] route file は app/pages/ に置いて薄く保ち、feature の状態、validation、API result handling、主要な状態遷移を feature slice に委譲する。
  • [必須] feature directory は原則フラットにし、components/composables/models/tests/ を作らない。feature-local locale source の i18n/ だけを例外とする。
  • [必須] feature directory と .ts file は kebab-case、Vue component file は PascalCase、export symbol は用途に応じ camelCase または PascalCase にする。
  • [必須] composable は use-、test は対象 file 名に対応させる。
  • [推奨] shared へ移すのは2つ以上の feature で必要になったとき、または app-wide contract として意図的に定義するときにする。
  • [必須] 新規 shared code は app/shared/<concept>/ の概念 slice に置き、役割別 directory を shared 直下へ増やさない。
  • [条件付き] 既存 role directory の小修正では無関係な移動を避け、移動を伴う変更から概念 slice に寄せる。
  • [必須] shared/components/ui/ は UI primitive と design-system wrapper の所有場所にし、feature code から Reka UI primitive を直接 import しない。
  • [推奨] feature-specific adapter は利用 feature に置き、複数 feature の安定 contract になった時点で shared concept へ移す。
text
apps/nuxt/app/features/<feature>/
  FeatureView.vue
  use-feature.ts
  use-feature.test.ts
  model.ts
  i18n/
    ja.json
    en.json

apps/nuxt/app/shared/<concept>/
  model.ts
  use-concept.ts
  resolve-concept.ts
  resolve-concept.test.ts
  i18n/
    ja.json
    en.json