コンテンツにスキップ

テックスタック

全体方針

方針 内容
TypeScript で統一 backend・frontend・Chrome 拡張のすべてを TypeScript で書き、型の扱いを揃える
スキーマ駆動 API の入出力を Zod スキーマに一元定義し、そこから OpenAPI と frontend の API クライアントを自動生成する
サーバーレス 常時稼働のサーバーを持たず、AWS Lambda / App Runner にコンテナイメージを配置する

採用技術

カテゴリ 技術名 バージョン 用途 選定理由
言語 TypeScript v5.8.3 backend / frontend / 拡張 型安全性。3 リポジトリで知識を共通化できる
ランタイム Bun v1.3.11 backend / frontend の実行・パッケージ管理・テスト TS をそのまま実行でき、テストランナーも内蔵でツール数を減らせる
API フレームワーク Hono v4.7.7 backend の Web API 軽量で Lambda との相性が良い
API スキーマ @hono/zod-openapi v1.2.4 入力検証・型・OpenAPI 生成 1 つの Zod 定義でバリデーション・型・ドキュメントを兼ねられる
バリデーション Zod v4.3.6 データ形状の定義と実行時検証 TypeScript の型と実行時検証を同じ定義から導ける
ORM Drizzle ORM v0.45.2 DB 操作・マイグレーション生成 SQL に近い書き味で、スキーマ定義から型と SQL を生成できる
DB PostgreSQL v16 データ永続化 分岐条件などテーブル間の関係が複雑なため RDB を採用
フロントフレームワーク Next.js v15.3.0 Web UI(App Router) サーバーコンポーネントとルーティングを標準で持つ
UI ライブラリ React v19.0.0 画面構築 Next.js の前提
データ取得 TanStack Query v5.95.2 サーバーデータの取得・キャッシュ 再取得・キャッシュ無効化を画面ごとに書かずに済む
認証 next-auth v4.24.13 Google ログイン 社内 Google アカウントで認証を完結できる
API クライアント生成 orval v7.8.0 OpenAPI から react-query クライアントを生成 backend の変更に frontend が追従でき、手書きの乖離を防げる
スタイル SCSS(CSS Modules) sass v1.98.0 画面のスタイリング クラス名の衝突を避けつつ既存の書き方を維持できる
拡張フレームワーク Plasmo v0.90.3 Chrome 拡張 マニフェストとビルド設定を自動生成し、React で書ける
拡張 UI MUI v5.14.20 拡張の UI コンポーネント 拡張の画面を短時間で組める
インフラ AWS Lambda - backend API の実行環境 リクエスト単位の課金でコストを抑えられる
インフラ AWS App Runner - frontend の実行環境 コンテナイメージから直接ホスティングできる
インフラ Amazon ECR - コンテナイメージのレジストリ Lambda / App Runner の両方から参照できる
CI/CD GitHub Actions - ビルド・デプロイ main への push で ECR push とデプロイまで自動化
ドキュメント MkDocs Material v9.7.6 本ドキュメント Markdown と mermaid でそのまま書ける。ja / en の i18n 対応

主要ライブラリ

ライブラリ名 バージョン 用途
@hono/swagger-ui v0.6.1 /swagger の API ドキュメント画面
postgres v3.4.8 PostgreSQL 接続ドライバ
drizzle-kit v0.31.10 マイグレーション SQL の生成・Drizzle Studio
react-icons v5.6.0 frontend のアイコン
Vitest v3.2.4 frontend / 拡張のテスト
Playwright v1.62.1 dev 環境に対する統合テスト
Storybook v8.6.14 UI コンポーネントの単体確認
ESLint / Prettier v9.24.0 / v3.8.1 Lint・フォーマット
husky / lint-staged v9.1.7 / v16.4.0 コミット時の自動 Lint・フォーマット
hygen v6.2.11 コンポーネント雛形の生成

テスト構成

テスト種別 対象 ツール 実行場所
API テスト backend の route bun test heineken-survey-design-backend
単体テスト frontend のドメインロジック Vitest heineken-survey-design-frontend
単体テスト 拡張の CS 変換ロジック Vitest Lab-web-extension
統合テスト dev 環境の画面操作・プレビュー走行 Playwright integration-tests

検討中・廃止予定

技術名 状態 備考
スコアロジック 対象外 Creative Survey には存在するが利用しない
分岐先ランダム 対象外 同上。CS へは is_random: false を送るのみ
サバイバル形式の設問 対象外 同上。設問タイプとして追加しない
スプレッドシート形式のエクスポート 廃止済み 2026-07-14 に SurveyExportPayload の直接受け渡しへ全面移行