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.
B-club / KINGYO / C-girl / 焼肉En の 店舗 → キャスト → 素材 → 投稿 を記録・集計する社内業務用サイトです(日本語・スマホ優先)。 SNSへの自動投稿やAPI連携は行いません(記録専用)。 • スタック: Next.js 16 / TypeScript / Tailwind CSS 4 / PostgreSQL(本番)・PGlite(ローカル組み込みDB) • 認証: メール+パスワード(自己登録なし。管理者が発行)。店舗ごとに 管理者/編集スタッフ/閲覧のみ • 日付: 表示・カレンダーの日境界は Asia/Tokyo。日時は timestamptz、撮影日・回答日は date(架空の時刻は付けません) • 初回アクセス時に自動でマイグレーションと初期マスター(3店舗・20セット60問、seed/APP_SEED.json)が投入されます。何度実行しても重複せず、実績データは消えません(npm run db:seed でも可)。 • キャストは空で始まります。デモ用の架空データが必要な時だけ npm run seed:demo(DATABASE_URL 設定時は拒否)。 • ログイン後、/admin/users(システム管理者のみ)でスタッフを招待し、店舗ごとの権限を付与します。Read the full README ↗
B-club / KINGYO / C-girl / 焼肉En の 店舗 → キャスト → 素材 → 投稿 を記録・集計する社内業務用サイトです(日本語・スマホ優先)。 SNSへの自動投稿やAPI連携は行いません(記録専用)。
npm install
cp .env.example .env # ローカルだけなら DATABASE_URL は消す/空でOK(./.data/pglite を自動作成)
ADMIN_PASSWORD='10文字以上のパスワード' npm run create-admin -- [email protected] "管理者"
npm run build && COOKIE_SECURE=false npm start # → http://localhost:3000
# 開発: COOKIE_SECURE=false npm run dev
seed/APP_SEED.json)が投入されます。何度実行しても重複せず、実績データは消えません(npm run db:seed でも可)。npm run seed:demo(DATABASE_URL 設定時は拒否)。/admin/users(システム管理者のみ)でスタッフを招待し、店舗ごとの権限を付与します。PC・スマホで同じ記録を見るには、共有のPostgreSQLが必要です。
.env に DATABASE_URL=... と COOKIE_SECURE=true(https運用時)を設定npm run db:migrate(マイグレーション+初期マスター)→ npm run create-admin -- ...DATABASE_URL は絶対にフロントエンドやGitへ出さないでください。GitHubリポジトリを接続し、環境変数 DATABASE_URL / COOKIE_SECURE=true を設定してデプロイ。初回は上記 3 のコマンドをローカルから実行(同じ DATABASE_URL を使う)。
npm run typecheck
npm test # 集計・検算例・権限・回答進捗などのドメインテスト(32件、メモリDB)
npm run build && npm run test:e2e # 実ブラウザ(Edge)のUIテスト 23件(別DB .data/e2e を使用)
pg_dump "$DATABASE_URL" -Fc -f backup.dump / pg_restore -d "$DATABASE_URL" --clean backup.dump.data/pglite フォルダごとコピー/戻すダッシュボード → CSV出力(キャスト一覧・素材一覧・投稿履歴。数式インジェクション対策済み)も使えますBCL-PR-0001-01 形式で、店舗×種別のカウンタ(INSERT … ON CONFLICT DO UPDATE)で採番するため同時登録でも重複せず、取消しても振り直しません。(id, store_id) でDBでも禁止。保存の連打は画面側のロック+request_key の一意制約で二重登録を防ぎます。materials に、ブラウザから直接アップロードします(署名付きURL・サーバーを経由しないので大きな動画もOK)。閲覧は認証後の期限付きURL(1時間)です。SUPABASE_URL と SUPABASE_SERVICE_ROLE_KEY(Project Settings → API の service_role)を設定します。キーはサーバー専用で、Gitやブラウザに出さないでください。MAX_UPLOAD_MB の小さい方です。対応形式: JPEG/PNG/WebP/GIF/HEIC、MP4/MOV/WebM。GEMINI_API_KEY(Google AI Studio で取得。サーバー専用)を設定します。モデルは GEMINI_MODEL(既定 gemini-3.8-flash)で変更できます。