个人 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)が通っていること