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
小規模配送会社向けの統合業務管理システム。配送案件・配車・ドライバー・車両・売上分析をひとつの画面で。
Translation pending
BusinessGitHub @tono3679-creatorOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Repository information has not been collected yet.
No updates detected yet. GitHub releases will appear here.
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗配送業務のすべてを、ひとつの画面で。
従業員5〜30名の配送会社向けの統合業務管理システムです。Excel・紙・ホワイトボードで管理されがちな配送案件・配車・ドライバー・車両・荷主・売上を一元管理し、ドライバーはスマートフォンから配送ステータスを更新できます。
▶ デモ:https://delivery-manager-azure.vercel.app(登録不要。ログイン画面の「管理者として体験」「ドライバーとして体験」からすぐに触れます)
| 配車ボード(ドラッグで割り当て・時刻変更) | 配送案件(検索・CSV 入出力) |
|---|---|
| 売上・利益分析 | 荷主の請求・未請求 |
| 案件の詳細(ステータス履歴・担当) | 設定(営業所・操作履歴) |
ドライバー画面(スマートフォン)
スクリーンショットは、アプリを起動した状態で
BASE_URL=http://localhost:3000 npm run screenshotsを実行すると撮り直せます(新しいデモ環境を作って撮影します)。
管理者(経営者・配車担当)
ドライバー(スマートフォン)
| 分類 | 採用 | ライセンス |
|---|---|---|
| フレームワーク | Next.js 16(App Router・Server Actions)/ React 19 / TypeScript | MIT |
| UI | Tailwind CSS 4 / shadcn/ui(Radix UI)/ lucide-react / sonner | MIT・ISC |
| DB | PostgreSQL(公開環境は Neon)/ postgres.js | PostgreSQL License・MIT・Unlicense |
| ログイン | アプリ内で実装(Node.js 標準の scrypt・HttpOnly Cookie のセッション) | — |
| グラフ・地図 | Recharts / Leaflet + OpenStreetMap | MIT・BSD-2-Clause(地図データ © OpenStreetMap contributors, ODbL) |
| フォーム・検証 | React Hook Form + Zod | MIT |
| その他 | @dnd-kit/core(ドラッグ)/ Papa Parse(CSV) | MIT |
| テスト | Vitest / Playwright | MIT・Apache-2.0 |
依存関係は必要なものに絞っています(API キーや有料契約が必要なライブラリ・サービスは使っていません)。
当初は Supabase(PostgreSQL・Auth・Realtime)で作り、公開の段階で Neon(PostgreSQL)+アプリ内のログインに切り替えました。DB の設計(RLS・DB 関数・マイグレーション)はそのままで、auth.uid() などの関数を db/bootstrap.sql で用意しています。
会社を19社(案件 118,714件)に増やした状態で、各画面のデータ取得を管理者・ドライバーの権限で計測しました(ローカルの PostgreSQL 16、scripts/dev/perf.ts)。
| 画面 | データ取得 |
|---|---|
| すべての画面 | 2〜50 ms |
| 配送案件の一覧(検索・件数を含む) | 44 ms |
| CSV 書き出し(1社の全案件 約6,000件) | 122 ms |
X-Frame-Options: DENY などのセキュリティヘッダー= + - @ で始まる値を無害化DEMO_CREATE_LIMIT_PER_HOUR)DEMO_MAX_ACTIVE、既定 30)を設け、24時間後に自動削除します。「デモを終了する」を押すとその場で削除しますaudit_logs)に記録しますPostgreSQL 16 と Node.js 22 があれば動きます。
npm install
cp .env.example .env.local # DATABASE_URL をローカルの PostgreSQL に合わせる
npm run db:local:reset # DB 作成 → ロールと auth スキーマ(db/bootstrap.sql)→ マイグレーション
npm run db:seed # デモデータ(Seed 値で再現可能)
npm run db:verify # データの整合性チェック(21項目)
npm run dev # http://localhost:3000
ログイン画面の「管理者として体験」「ドライバーとして体験」から操作できます。Seed で作るアカウント:[email protected] / demo-admin-2026、[email protected] / demo-driver-2026。
npm run typecheck
npm run lint
npm test # 単体テスト・DB テスト(220件)
npm run test:e2e # ブラウザでの E2E テスト(PC 15件・スマートフォン 8件)
| 種類 | 主な内容 |
|---|---|
| DB テスト | 管理者とドライバー・会社間の権限分離(RLS と表の権限)、ステータス遷移、画面間の数字の一致、マスタと請求のルール、CSV 入出力、通知、同時編集、デモデータの整合性、現在地の送信・停止と見える範囲、ログインの情報(セッション等)が利用者の権限から見えないこと、マイグレーションの再実行 |
| 単体テスト | ステータス遷移、配車ボードの配置計算、CSV の解析、入力チェック、CSP、デモデータの配車(予定が重ならない)、パスワードの保存と照合、公開環境の設定の確認、デモ用の模擬位置の計算 |
| E2E テスト | ログイン・ログアウト(ログアウトした Cookie が使えないこと)、デモの終了、案件の登録・編集・削除、配車ボードでの割り当て、ドライバーのステータス更新と売上への反映、権限(未ログイン・ドライバー・他のドライバーの案件)、CSV の書き出しと取り込み、スマートフォンのメニュー操作と横はみ出し、位置情報の共有から管理者の地図への表示、離席中の自動更新の停止 |
E2E テストはテストごとに専用のデモ会社を作り、終わったら削除します。画面で JavaScript のエラー(CSP の違反を含む)が出たテストは失敗にします。GitHub Actions では、型チェック・Lint・マイグレーションとデモデータの検証・単体テストと DB テスト・ビルド・E2E テスト(ビルドしたアプリを next start で起動)を順に実行します。
Vercel・Neon のプランや利用規約(商用利用の可否、無料プランの制限)は、公開前にご確認ください。どちらも無料プラン(クレジットカード不要)で動きます。
作業は Vercel の画面だけで完結します。DB の準備(マイグレーション・見本の会社の作成・整合性チェック)は、本番の公開(Production デプロイ)のたびにビルドの前で自動的に行います(npm run vercel-build → scripts/deploy/vercel-build.ts)。プレビュー(ブランチごとの公開)では DB を変更しません。
DATABASE_URL・DATABASE_URL_UNPOOLED が自動で設定されます| 変数 | 内容 | 公開範囲 |
|---|---|---|
SEED_LOGIN_PASSWORD | 見本の会社にログインするアカウント([email protected]・[email protected])のパスワード。12文字以上。README の既定パスワードは使えない | サーバー専用 |
CRON_SECRET | 期限切れデモの削除(Vercel Cron)の認証用。16文字以上のランダムな文字列 | サーバー専用 |
NEXT_PUBLIC_MAP_TILE_URL | 地図タイルの URL(任意。アクセスの多い本番では契約したタイル配信を推奨) | ブラウザに公開してよい |
vercel.json の crons).github/workflows/production-e2e.yml)。テストで作ったデモは画面の「デモを終了する」で削除します。リポジトリの Secrets に E2E_LOGIN_PASSWORD(SEED_LOGIN_PASSWORD と同じ値)を登録すると、メールアドレスとパスワードでのログインも確かめますアプリのサーバー(Vercel Functions)は DB と同じシンガポール(sin1)で動かします(vercel.json)。Neon には東京のリージョンがないため、DB との往復を短くするほうを優先しています。
Neon の無料プランは計算時間が月 100 CU 時間(最小の 0.25 CU なら約 400 時間)で、5 分間問い合わせがなければ DB が止まり、その間は計算時間を使いません。画面を開いたまま席を離れても DB が止まるよう、10 分操作がなければ自動更新(30秒ごとの再取得・現在地・遅延の確認)を止め、操作すると再開します。
NEXT_PUBLIC_MAP_TILE_URL に契約したタイル配信サービスの URL を設定してください| フェーズ | 内容 |
|---|---|
| Phase 1 基盤 | レイアウト・DB 設計(RLS)・デモデータ・ログインとデモ体験 |
| Phase 2 コア | ダッシュボード・配送案件・配車ボード・ドライバー画面・連携 |
| Phase 3 管理 | ドライバー・車両・荷主(請求・未請求)・売上と利益の分析・経費 |
| Phase 4 付加価値 | 配送マップ・通知・CSV 入出力・同時編集とオフライン対策 |
| Phase 5 仕上げ | 権限の締め直しとセキュリティヘッダー・設定画面と操作履歴・エラー処理・性能確認・レスポンシブ・E2E テスト |