2025年12月、bulldoc で Google ドキュメント風 UI + OpenAPI 仕様駆動開発を試した。名前のとおりブルドッグがモチーフで、機能名もちょっと犬寄りにしてある。
技術スタック
- Next.js 16 + React 19
- Drizzle ORM + SQLite(libSQL / Turso)
- Biome + Vitest + Playwright
- OpenRouter API(マルチモデル対応の AI)
- SWR でデータフェッチ
作った機能(MVP)
スキーマから一気に立てた。projects / documents / bone anchors / memories / reviews というテーブル構成。
- bone anchor — プロジェクトの制約(守るべき前提)を「骨」として固定する
- barking review — ドキュメントの曖昧さ・矛盾を自動で検出して「吠える」レビュー
- memories — 文脈の保持
- RAG(Retrieval-Augmented Generation)+ OpenRouter でマルチモデル
- Google Docs 風 UI:ドキュメント一覧、
Ctrl+Kのコマンドパレット、全画面エディタ、2秒デバウンスの自動保存 - Route Groups でレイアウトを出し分け(home / editor / dashboard)
途中でセキュリティ監査もして、API キーの暗号化保存・入力検証・エラー詳細の漏洩防止を直し、ユニット 71 + E2E 42 まで拡充した。
OpenAPI first でやってみて
OpenAPIを唯一の仕様書にする の実装編として、仕様書を先に置いて UI/API を生やした。プロトタイプとの相性は良い。ただ正直に言うと、スキーマを変えるたびに FE / BE 両方を直すサイクルは覚悟が要る。仕様が一次情報になる気持ちよさと、変更コストはトレードオフ。
おわり
このあと「ビジネス固有のコードは全部消して、技術スタックだけ残す」コミットで、bulldoc 本体の機能は剥がしてテンプレ化した。アイデアを一度フルで作ってから、再利用できる骨格だけ残す、という整理。bone anchor / barking review の発想は、リアルタイムコラボエディタ の方に引き継いでいった。