プロジェクト一覧へ

非公開の読書コンパニオン

Booktrace

レビュー、評価、メモ、読書目標とともに、自分だけの読書履歴を残せるアプリ。

Next.jsTypeScriptPostgreSQLPrismaAuth.js
実際のユーザーデータを扱う、完成度と信頼性の高いフルスタックアプリを設計・公開できます。

01

課題

基本的なBook Logはタイトルとメモを保存できましたが、信頼できる個人向けプロダクトには達していませんでした。非公開ライブラリ、豊かな読書情報、役立つ進捗表示、障害に強い書籍検索、すべての更新に対する安全な所有権チェックが必要でした。

02

担当

プロダクト方針、UX/ビジュアルデザイン、フルスタック設計、データベース設計、認証、バリデーション、外部API連携、アクセシビリティ、テスト、デプロイ。

03

制約

ライブラリ情報を必ず所有者だけに限定し、外部書籍サービスの遅延や停止にも対応する必要がありました。信頼できないフォーム入力のサーバー検証、安全なDBマイグレーション、レスポンシブな読み込み・空・エラー状態も同時に求められました。

04

プロセス

Auth.jsセッションと所有者範囲付きPrismaクエリを中心に再構築し、読書状態、評価、タグ、お気に入り、読了日、目標、プロフィール設定へデータモデルを拡張しました。サーバーアクションはZodで検証し、検索はGoogle Booksを優先しつつOpen Libraryへ自動で切り替えます。保存時の書誌スナップショットにより外部障害中も個人記録を利用できます。

05

成果

認証、個人ライブラリ、5つの読書状態、レビューとメモ、年間目標と統計、障害に強い検索、アカウント管理、アクセシブルなレスポンシブ状態、自動テストを備えた本番運用可能な読書コンパニオンになりました。

体験のポイント

  • Auth.jsの認証情報セッションで保護された非公開アカウントとライブラリ
  • 読書状態、1〜5評価、タグ、お気に入り、レビュー、メモ、読書日
  • 年間目標、進捗表示、ライブラリ統計
  • タイムアウト、キャッシュ、Open Library自動フォールバックを備えたGoogle Books検索
  • プロフィール設定とパスワード再確認付きアカウント削除

設計とパフォーマンス

  • Next.js 16のServer ComponentsとServer Actionsで非公開データの読み書きをサーバー内に保持
  • すべてのPrismaライブラリクエリをuserIdで限定し、ユーザーと書籍の組み合わせをDBでも一意に制約
  • Zodで更新前にフォームデータを検証し、bcryptで保存パスワードを保護
  • 検証済み書誌スナップショットで保存済み記録を外部サービスの可用性から分離
  • VitestとTesting Libraryでドメイン検証、外部データ変換、主要UI動作をテスト

Kitty Kio

思慮深いコードは、役に立ち、表現豊かで、少しだけ魔法のようにもなれる。

Kitty Kio cat logo wearing a bucket hat

© 2026 Kitty Kio. コードは MIT ライセンス、コンテンツとブランドはすべての権利を保有します。