個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證製作者的介紹僅有上面的一句話。 更多詳情請閱讀儲存庫 README。 儲存庫 README ↗
正在載入完整 README。
檢視完整 README ↗カメラでISBNのバーコードを撮影し、普段利用している図書館に蔵書があるかどうかを確認するWebアプリケーション。
カメラを利用できるモダンブラウザ(スマートフォン・PC)。HTTPS もしくは localhost 上で動作します。
利用には Google アカウントでのログインが必要です(登録図書館・検索履歴を端末間で同期するため)。
@emotion)PNG には draw.io の図面 XML が埋め込まれているため、draw.io(デスクトップアプリ or app.diagrams.net)で開くとそのまま編集できます。
Clean Architecture に基づく3層構成。
.
├── index.html # エントリーHTML
├── src/
│ ├── main.tsx # エントリーポイント
│ ├── App.tsx # アプリケーションルート
│ ├── app/ # ルーター・DI(dependencies)
│ ├── domain/ # ドメイン層
│ │ ├── models/ # ドメインモデル
│ │ ├── repositories/ # リポジトリインターフェース
│ │ ├── data/ # ドメインデータ(都道府県等)
│ │ └── utils/ # ISBN バリデーション等
│ ├── data/ # データ層
│ │ ├── datasources/ # API クライアント
│ │ ├── repositories/ # リポジトリ実装
│ │ ├── models/ # レスポンスモデル
│ │ ├── providers/ # データ層プロバイダ
│ │ └── exceptions/ # カスタム例外
│ └── presentation/ # プレゼンテーション層
│ ├── pages/ # 画面
│ ├── widgets/ # 共通ウィジェット
│ ├── auth/ # 認証(Google ログイン・AuthProvider 等)
│ ├── hooks/ # UI 状態フック
│ ├── theme/ # テーマ・配色
│ └── utils/ # エラーメッセージ解決等
├── public/
│ └── _redirects # Cloudflare Pages の SPA フォールバック
├── functions/ # Cloudflare Pages Functions(Workers ランタイム)
│ ├── _shared/ # 共有(googleAuth: ID トークン検証)
│ └── api/
│ ├── calil/[action].js # カーリル API プロキシ(library / check のみ許可)
│ ├── me.js # ログインユーザー情報
│ ├── registered-libraries.js # 登録図書館の取得 / 保存(D1)
│ └── search-history.js # 検索履歴の取得 / 保存(D1)
└── infra/
├── d1/migrations/ # D1 スキーマのマイグレーション(追加手順は infra/d1/README.md)
└── *.bicep # 旧 Azure 用 IaC(撤去予定 #78)
カーリル API の appkey は サーバ側でのみ 注入され、クライアントのバンドルには含まれません。
登録図書館・検索履歴はログインユーザー単位で Cloudflare D1 に永続化されます。
詳細は DEPLOY.md を参照してください。
# 依存パッケージのインストール
npm install
cp .env.local.example .env.local # CALIL_APP_KEY=... を記入
npm run dev # http://localhost:5173
本番と同一構成(静的配信 + Pages Functions)で確認したい場合は npm run pages:dev(Cloudflare Pages のローカルエミュレーション)を利用します。
手順の詳細は DEPLOY.md を参照してください。
# ユニットテスト・コンポーネントテスト(Vitest + Testing Library)
npm test
# ウォッチモード
npm run test:watch
# 型チェック
npx tsc -b
# 型チェック + プロダクションビルド(出力先: dist/)
npm run build
# ビルド成果物のプレビュー
npm run preview
main への push で .github/workflows/cloudflare-pages.yml が Cloudflare Pages へ自動デプロイします(デプロイ前に D1 マイグレーションを --remote で適用)。
PR では ci.yml(型チェック + テスト)と d1-migrate.yml(マイグレーションの --local 検証)が走ります。
リソース作成・シークレット登録・手動デプロイの手順は DEPLOY.md、スキーマ運用は infra/d1/README.md を参照してください。
GitHub Flow を採用。
main: プロダクションブランチ。テスト済み・レビュー済みのコードのみマージされるfeature/[ISSUE番号]-[短い説明]: 機能開発用ブランチ。main から作成し、完了後 main へマージmain から feature/[ISSUE番号]-[短い説明] ブランチを作成するnpm test と npx tsc -b が通ることを確認するnpx tsc -b でエラーが出ない状態を維持するnpm test)が通っていること