Documents
Home

03 技術スタック

3.1 monorepo 構成

robot-bot/                          # アプリケーションリポジトリ別リポジトリ
├── apps/
   ├── web/                        # SvelteKit + shadcn-svelte + Tailwind CSS
   ├── api/                        # Hono (TypeScript) 自宅鯖 API
   ├── bot/                        # discord.js (TypeScript)
   └── worker/                     # Hono CF WorkersCF  API 専用
├── packages/
   ├── db/                         # drizzle-orm
      ├── schema/                 # 共通スキーマ定義
      ├── postgres/               # PostgreSQL 用マイグレーション
      ├── turso/                  # Turso 用マイグレーション
      └── d1/                     # D1 用マイグレーション
   ├── types/                      # 共通型定義API エンドポイント定義
   ├── commands/                   # Discord コマンド定義botweb 共用
   └── config/                     # 共通設定環境変数定義
├── turbo.json
├── pnpm-workspace.yaml
└── package.json

3.2 ライブラリ一覧

区分 ライブラリ
WebUI SvelteKit
UI コンポーネント shadcn-svelte
CSS フレームワーク Tailwind CSS
自宅鯖 API Hono (TypeScript)
CF Workers API Hono (TypeScript)
DiscordBOT discord.js (TypeScript)
ORM drizzle-orm
パッケージ管理 pnpm
monorepo Turborepo
認証 自前実装
デバイス識別 FingerprintJS(詳細モード)

3.3 API 共通化方針

自宅鯖 API と CF Workers API は機能差なし・同一コードを利用。
DB アクセス部分のみ環境変数で切り替える。

packages/db/client.ts          # 環境変数で PostgreSQL / Turso / D1 を切り替え
packages/types/api/routes.ts   # エンドポイント定義リクエスト/レスポンス型

3.4 DB 切り替え方針

環境 使用 DB
自宅鯖(通常時) PostgreSQL
CF Workers(通常時) Turso
CF Workers(Turso 障害時) D1
自宅鯖(ローカル開発) PostgreSQL