Synaplan
Open-source AI platform for companies: self-hosted AI agents, GDPR-compliant chatbot widget, RAG knowledge base, WhatsApp and Outlook AI, MCP, multi-model routing. Docker, Kubernetes or hosted in Germ
翻訳待ち
No updates detected yet. GitHub releases will appear here.
Loading the full README. The saved excerpt is shown below.
会議室・フォンブースを予約する小規模オフィス向けの予約システム(PoC / ポートフォリオ)。 日単位のタイムグリッドから空きスロットを選んで予約でき、同一リソースの時間帯重複は自動でブロックします。 汎用サンプルとして一から実装したものです。特定企業のデータ・レイアウト・社内システムには依存しません。 https://room-booking-portfolio.vercel.app で公開しています。Googleログイン後のデータは 全ログインユーザーで共有されます(訪問者ごとの分離なし)。予約は本人のものだけ編集・削除できますが、 デモ用途のため予告なくデータをリセットする場合があります。 プライバシーポリシー / 利用規約 • resources/{id} … 予約対象(会議室・フォンブース): name, type, capacity, location, active • bookings/{id} … 予約: resourceId, userId, userName, title, start, end, createdAt 競合判定は UI/DB に依存しない純関数(lib/overlap.ts)に切り出し、lib/__tests__/overlap.test.ts でカバーしています。Read the full README ↗
会議室・フォンブースを予約する小規模オフィス向けの予約システム(PoC / ポートフォリオ)。 日単位のタイムグリッドから空きスロットを選んで予約でき、同一リソースの時間帯重複は自動でブロックします。
汎用サンプルとして一から実装したものです。特定企業のデータ・レイアウト・社内システムには依存しません。
https://room-booking-portfolio.vercel.app で公開しています。Googleログイン後のデータは 全ログインユーザーで共有されます(訪問者ごとの分離なし)。予約は本人のものだけ編集・削除できますが、 デモ用途のため予告なくデータをリセットする場合があります。
| 領域 | 採用 | 理由 |
|---|---|---|
| フロント | Next.js 16 (App Router / TypeScript) | 型安全・App Routerで見通しの良い構成 |
| スタイル | Tailwind CSS | 小規模UIを素早く一貫したデザインで実装 |
| 認証 | Firebase Authentication | Googleログインを最小実装で導入 |
| DB | Cloud Firestore | 予約データのリアルタイム性・無料枠・ルールでの権限制御 |
| テスト | Vitest | 競合判定ロジックのユニットテスト |
flowchart LR
U[ブラウザ / Next.js] -->|Google Sign-In| A[Firebase Auth]
U -->|CRUD| F[(Cloud Firestore)]
F -.->|セキュリティルールで権限制御| U
S[seed スクリプト<br/>firebase-admin] -->|resources 投入| F
resources/{id} … 予約対象(会議室・フォンブース): name, type, capacity, location, activebookings/{id} … 予約: resourceId, userId, userName, title, start, end, createdAt競合判定は UI/DB に依存しない純関数(lib/overlap.ts)に切り出し、lib/__tests__/overlap.test.ts でカバーしています。
npm install
cp .env.local.example .env.local
# .env.local に Firebase の設定値を入力
firestore.rules の内容を Firebase Console の Firestore → ルール に貼り付けて公開。
サービスアカウント鍵(プロジェクトの設定 → サービスアカウント → 新しい秘密鍵)を
serviceAccountKey.json として保存(コミット禁止・.gitignore済み)。
GOOGLE_APPLICATION_CREDENTIALS=./serviceAccountKey.json npm run seed
npm run dev # http://localhost:3000
npm test # 競合判定ロジックのテスト
npm run build # 本番ビルド
Firebase Hosting か Vercel にデプロイ可能。環境変数(NEXT_PUBLIC_FIREBASE_*)を
デプロイ先に設定すればそのまま動作します。
MIT