[{"data":1,"prerenderedAt":479},["ShallowReactive",2],{"navigation":3,"doc-/frontend":217,"docs-all-paths":426},[4,19,39,63,87,111,127,195,211],{"title":5,"path":6,"stem":7,"children":8},"Welcome","/welcome","01.welcome",[9,11,15],{"title":5,"path":6,"stem":10},"01.welcome/index",{"title":12,"path":13,"stem":14},"Astar とは（5分）","/welcome/product-in-5-min","01.welcome/01.product-in-5-min",{"title":16,"path":17,"stem":18},"事業文脈","/welcome/business-context","01.welcome/02.business-context",{"title":20,"path":21,"stem":22,"children":23},"Getting Started","/getting-started","02.getting-started",[24,27,31,35],{"title":25,"path":21,"stem":26},"はじめかた","02.getting-started/index",{"title":28,"path":29,"stem":30},"リポジトリ取得と環境構築","/getting-started/repo-setup","02.getting-started/01.repo-setup",{"title":32,"path":33,"stem":34},"日々の開発ループ","/getting-started/dev-loop","02.getting-started/02.dev-loop",{"title":36,"path":37,"stem":38},"検証の 4 層","/getting-started/verification-tiers","02.getting-started/03.verification-tiers",{"title":40,"path":41,"stem":42,"children":43},"Architecture","/architecture","03.architecture",[44,47,51,55,59],{"title":45,"path":41,"stem":46},"アーキテクチャ","03.architecture/index",{"title":48,"path":49,"stem":50},"マルチテナンシーと RLS","/architecture/multi-tenancy-rls","03.architecture/01.multi-tenancy-rls",{"title":52,"path":53,"stem":54},"認可モデル","/architecture/authorization","03.architecture/02.authorization",{"title":56,"path":57,"stem":58},"AI サブシステム","/architecture/ai-subsystem","03.architecture/03.ai-subsystem",{"title":60,"path":61,"stem":62},"データモデル","/architecture/data-model","03.architecture/04.data-model",{"title":64,"path":65,"stem":66,"children":67},"Backend","/backend","04.backend",[68,71,75,79,83],{"title":69,"path":65,"stem":70},"バックエンド","04.backend/index",{"title":72,"path":73,"stem":74},"層構造","/backend/layering","04.backend/01.layering",{"title":76,"path":77,"stem":78},"規約","/backend/conventions","04.backend/02.conventions",{"title":80,"path":81,"stem":82},"テスト","/backend/testing","04.backend/03.testing",{"title":84,"path":85,"stem":86},"マイグレーション","/backend/migrations","04.backend/04.migrations",{"title":88,"path":89,"stem":90,"children":91},"Frontend","/frontend","05.frontend",[92,95,99,103,107],{"title":93,"path":89,"stem":94},"フロントエンド","05.frontend/index",{"title":96,"path":97,"stem":98},"モジュール内部構造","/frontend/module-anatomy","05.frontend/01.module-anatomy",{"title":100,"path":101,"stem":102},"API アクセスの一本道","/frontend/api-access-chain","05.frontend/02.api-access-chain",{"title":104,"path":105,"stem":106},"i18n","/frontend/i18n","05.frontend/03.i18n",{"title":108,"path":109,"stem":110},"デザインシステム","/frontend/design-system","05.frontend/04.design-system",{"title":112,"path":113,"stem":114,"children":115},"Go Agent And Cli","/go-agent-and-cli","06.go-agent-and-cli",[116,119,123],{"title":117,"path":113,"stem":118},"Go agent と CLI","06.go-agent-and-cli/index",{"title":120,"path":121,"stem":122},"Go agent","/go-agent-and-cli/go-agent","06.go-agent-and-cli/01.go-agent",{"title":124,"path":125,"stem":126},"CLI","/go-agent-and-cli/cli","06.go-agent-and-cli/02.cli",{"title":128,"path":129,"stem":130,"children":131},"Modules","/modules","07.modules",[132,135,139,143,147,151,155,159,163,167,171,175,179,183,187,191],{"title":133,"path":129,"stem":134},"モジュール","07.modules/index",{"title":136,"path":137,"stem":138},"テーブル","/modules/table","07.modules/01.table",{"title":140,"path":141,"stem":142},"ドキュメントツリー","/modules/document","07.modules/02.document",{"title":144,"path":145,"stem":146},"AIチャット","/modules/ai","07.modules/03.ai",{"title":148,"path":149,"stem":150},"認証・権限","/modules/auth","07.modules/04.auth",{"title":152,"path":153,"stem":154},"AI取込","/modules/organize","07.modules/05.organize",{"title":156,"path":157,"stem":158},"ストレージ","/modules/storage","07.modules/06.storage",{"title":160,"path":161,"stem":162},"NAS同期","/modules/sync","07.modules/07.sync",{"title":164,"path":165,"stem":166},"ワークスペース","/modules/workspace","07.modules/08.workspace",{"title":168,"path":169,"stem":170},"テナントとメンバーシップ","/modules/tenant-membership","07.modules/09.tenant-membership",{"title":172,"path":173,"stem":174},"検索","/modules/search","07.modules/10.search",{"title":176,"path":177,"stem":178},"表示ビュー","/modules/display","07.modules/11.display",{"title":180,"path":181,"stem":182},"テンプレート","/modules/template","07.modules/12.template",{"title":184,"path":185,"stem":186},"メール","/modules/mail","07.modules/13.mail",{"title":188,"path":189,"stem":190},"電話","/modules/phone","07.modules/14.phone",{"title":192,"path":193,"stem":194},"リアルタイム","/modules/realtime","07.modules/15.realtime",{"title":196,"path":197,"stem":198,"children":199},"Infra And Deploy","/infra-and-deploy","08.infra-and-deploy",[200,203,207],{"title":201,"path":197,"stem":202},"インフラとデプロイ","08.infra-and-deploy/index",{"title":204,"path":205,"stem":206},"環境の種類","/infra-and-deploy/environments","08.infra-and-deploy/01.environments",{"title":208,"path":209,"stem":210},"セルフホスト構成","/infra-and-deploy/self-host","08.infra-and-deploy/02.self-host",{"title":212,"path":213,"stem":214,"children":215},"docs-map","/docs-map","09.docs-map/index",[216],{"title":212,"path":213,"stem":214},{"id":218,"title":219,"body":220,"description":420,"extension":421,"meta":422,"navigation":423,"path":89,"seo":424,"stem":94,"__hash__":425},"docs/05.frontend/index.md","フロントエンドガイド",{"type":221,"value":222,"toc":412},"minimark",[223,226,244,251,307,310,314,356,363,375,379,394],[224,225,219],"h1",{"id":219},[227,228,229,230,234,235,239,240,243],"p",{},"Astar Management のフロントエンドは ",[231,232,233],"strong",{},"Nuxt 4 / Vue 3 / TypeScript strict","（",[236,237,238],"code",{},"any"," 禁止）で書かれています。パッケージマネージャは Bun。SPA 専用構成（",[236,241,242],{},"ssr: false","）で、サーバーサイドレンダリングは前提にしていません。",[227,245,246,247,250],{},"コードの実体は ",[236,248,249],{},"frontend/app/"," 配下にあります。中心になるのは次の3つです。",[252,253,254,283,299],"ul",{},[255,256,257,262,263,266,267,266,270,266,273,266,276,266,279,282],"li",{},[231,258,259],{},[236,260,261],{},"app/modules/"," — 46 個のドメインモジュール（",[236,264,265],{},"tag",", ",[236,268,269],{},"table",[236,271,272],{},"document",[236,274,275],{},"ai",[236,277,278],{},"organize",[236,280,281],{},"workspace"," …）。各モジュールが1つの業務ドメインを担当します。",[255,284,285,290,291,294,295,298],{},[231,286,287],{},[236,288,289],{},"app/foundation/"," — shadcn-vue ベースの UI プリミティブ（",[236,292,293],{},"ui/","）と Astar 独自の共通コンポーネント（",[236,296,297],{},"common/","）。",[255,300,301,306],{},[231,302,303],{},[236,304,305],{},"app/shared/"," — API クライアント・SSE・通知・i18n などの技術基盤。ドメインを持たない横断的な仕組みはここに置きます。",[227,308,309],{},"このガイドを読む前提として、まだ手元でアプリを起動していない場合は先にセットアップ手順を確認してください。ここから先はコードの構造と規約に絞って説明します。",[311,312,313],"h2",{"id":313},"このセクションの構成",[315,316,317,337,342,347],"ol",{},[255,318,319,322,323,326,327,326,330,326,333,336],{},[320,321,96],"a",{"href":97}," — 1モジュールの中身（",[236,324,325],{},"components"," / ",[236,328,329],{},"composables",[236,331,332],{},"repositories",[236,334,335],{},"types","）と、モジュール間 import のルール",[255,338,339,341],{},[320,340,100],{"href":101}," — Component → composable → repository のチェーンと、OpenAPI 型生成",[255,343,344,346],{},[320,345,104],{"href":105}," — foundation / module の二層 + glossary 構造",[255,348,349,351,352,355],{},[320,350,108],{"href":109}," — デザイントークン、ブランド、",[236,353,354],{},"bun run lint"," によるトークン検査",[311,357,359,360],{"id":358},"迷ったら-appmodulestag","迷ったら ",[236,361,362],{},"app/modules/tag/",[227,364,365,367,368,371,372,374],{},[236,366,265],{},"（タグ付け機能）モジュールは、このガイドが繰り返し参照する ",[231,369,370],{},"参照実装"," です。規約に最も忠実で、かつ小さく完結しているため、新しいモジュールを作るときはまず ",[236,373,362],{}," の構造をコピーするところから始めます。困ったら本文の説明より先に、実際のファイルを開いて確認してください。",[311,376,378],{"id":377},"全体像モジュール索引","全体像（モジュール索引）",[227,380,381,382,385,386,389,390,393],{},"「このコードはどのモジュールにあるか」を調べたいときは、backend/frontend 全モジュールの対応表である ",[320,383,384],{"href":129},"モジュール索引"," を見てください。このセクションはモジュールの",[231,387,388],{},"中身の作り方","、モジュール索引はモジュールの",[231,391,392],{},"地図","という役割分担です。",[395,396,398],"callout",{"type":397},"info",[227,399,400,401,404,405,407,408,411],{},"検証コマンドは ",[236,402,403],{},"bun run typecheck && npx eslint --no-fix \u003Cchanged paths> && bun run test","。",[236,406,354],{}," は ",[236,409,410],{},"eslint . --fix"," をグローバルに実行し無関係なファイルまで書き換えるため、検証目的では使いません。",{"title":413,"searchDepth":414,"depth":414,"links":415},"",2,[416,417,419],{"id":313,"depth":414,"text":313},{"id":358,"depth":414,"text":418},"迷ったら app/modules/tag/",{"id":377,"depth":414,"text":378},"Nuxt 4 + TypeScript strict のフロントエンドを最初の1-2週間でひとりで触れるようになるためのガイド。モジュール構造・API アクセス経路・i18n・デザインシステムを扱う。","md",{},{"title":93},{"title":219,"description":420},"Wi1kPN7K9YppWe0NPc__CjX0kcLGd60HDS-QVkQ3dCU",[427,429,430,432,433,434,435,436,437,438,439,440,442,443,444,445,446,448,449,450,451,452,453,455,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477],{"path":13,"title":428},"Astar とは何か（5分で）",{"path":17,"title":16},{"path":6,"title":431},"ようこそ",{"path":29,"title":28},{"path":33,"title":32},{"path":37,"title":36},{"path":21,"title":25},{"path":49,"title":48},{"path":53,"title":52},{"path":57,"title":56},{"path":61,"title":60},{"path":41,"title":441},"システムアーキテクチャ",{"path":73,"title":72},{"path":77,"title":76},{"path":81,"title":80},{"path":85,"title":84},{"path":65,"title":447},"バックエンドガイド",{"path":97,"title":96},{"path":101,"title":100},{"path":105,"title":104},{"path":109,"title":108},{"path":89,"title":219},{"path":121,"title":454},"Go agent — NAS 同期エージェント",{"path":125,"title":456},"astar CLI",{"path":113,"title":117},{"path":137,"title":136},{"path":141,"title":140},{"path":145,"title":144},{"path":149,"title":148},{"path":153,"title":152},{"path":157,"title":156},{"path":161,"title":160},{"path":165,"title":164},{"path":169,"title":168},{"path":173,"title":172},{"path":177,"title":176},{"path":181,"title":180},{"path":185,"title":184},{"path":189,"title":188},{"path":193,"title":192},{"path":129,"title":384},{"path":205,"title":204},{"path":209,"title":208},{"path":197,"title":201},{"path":213,"title":478},"docs/ 地図",1785452454153]