コンテンツにスキップ

テックスタック

採用技術

カテゴリ 技術名 バージョン 用途 選定理由
言語 TypeScript v5.7 系(backend) / v5 系(frontend) フロント・バックエンド共通 型安全性と、OpenAPI からの型生成との親和性
ランタイム(backend) Bun v1 実行・パッケージ管理・テスト起動 ネイティブ TS 実行と高速な依存解決
フレームワーク(backend) Hono ^4.6 HTTP サーバ 軽量・エッジ/Lambda 適性が高い
API 定義(backend) @hono/zod-openapi ^1.2 ルート定義から OpenAPI を自動生成 定義とハンドラを 1 か所に書け、スキーマが二重化しない
ORM Drizzle ORM ^0.38 DB アクセス スキーマ定義から型を推論でき、SQL に近い記述ができる
DB PostgreSQL 17 データ永続化 JSON カラムと enum の運用実績
フレームワーク(frontend) Next.js 16.1(App Router) 管理画面 App Router によるルーティングとサーバコンポーネント
UI ライブラリ React 19.2 画面描画 Next.js 16 の要件
スタイリング Tailwind CSS v4 スタイル ユーティリティファーストで UI コンポーネントを内製
サーバ状態管理 TanStack Query(React Query) ^5.90 API キャッシュ・再検証 Orval が React Query 向けフックを生成する
API クライアント生成 Orval ^8.1 OpenAPI から型とフックを生成 backend と frontend の結合点を自動化する
認証 Google OAuth 2.0 + JWT(jose) jose ^5.9 ログインと API 認可 Google Workspace 前提の組織利用
インフラ AWS Lambda / ECS Fargate / App Runner / ECR - 実行環境 インフラストラクチャ を参照
データ連携 Databricks なし(SQL Statement Execution API を fetch で直叩き) Creative Survey / Ask One の回答取得 読み取り専用。ドライバ依存を持たない

主要ライブラリ

backend

ライブラリ名 バージョン 用途
hono ^4.6.18 HTTP フレームワーク
@hono/zod-openapi ^1.2.0 OpenAPI 付きルート定義
@hono/swagger-ui ^0.5.3 /docs の Swagger UI
@hono/zod-validator ^0.4.2 リクエスト検証
zod ^4.0.0 スキーマ定義・環境変数検証
drizzle-orm ^0.38.4 ORM
drizzle-kit ^0.30.4 スキーマ反映・マイグレーション・Studio
pg ^8.16.0 PostgreSQL ドライバ
jose ^5.9.6 JWT の署名・検証
googleapis ^144.0.0 Google Calendar / Gmail
@aws-sdk/client-ecs ^3.1045.0 同期バッチの ECS タスク起動
csv-parse ^6.1.0 CSV / TSV パース
winston ^3.17.0 構造化ログ
uuid ^11.0.5 アップロードファイル ID
vitest ^2.1.8 テストランナー

frontend

ライブラリ名 バージョン 用途
next 16.1.6 フレームワーク
react / react-dom 19.2.3 UI
@tanstack/react-query ^5.90.20 サーバ状態管理
orval ^8.1.0 API クライアント生成(開発時)
axios ^1.13.4 HTTP(Orval の周辺依存)
date-fns ^4.1.0 日付処理
lucide-react ^0.563.0 アイコン
clsx / tailwind-merge ^2.1.1 / ^3.4.0 クラス名の合成(cn())
tailwindcss ^4 スタイリング

開発ツール

ツール 用途
ESLint 静的解析(eslint.config.js / eslint.config.mjs)
Prettier フォーマット
husky + lint-staged コミット時に src/** へ prettier --write と eslint --fix
Vitest backend の単体テスト
Drizzle Studio DB の GUI 閲覧
Swagger UI API の手動確認(/docs)

frontend にテストランナーはない

フロントエンドにはテストランナーが導入されていない。型チェック(bun run check-types)と Lint が品質ゲートになる。

検討中・廃止予定

技術名 状態 備考
GET /api/v1/surveys/{surveyId}/respondents 廃止予定 レガシーエンドポイント。/panels 系に置き換える
arrangeSettings.step1.mainInterviewerId / subInterviewerId 廃止予定 単数形フィールド。複数形の mainInterviewerIds / subInterviewerIds に移行済み