Synaplan
開源 AI 平台,供企業使用:自行託管的 AI 代理、符合 GDPR 的聊天機器人小工具、RAG 知識庫、WhatsApp 與 Outlook AI、MCP、多模型路由。Docker、Kubernetes 或託管於 Germ
AI 翻譯
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證正在載入完整 README。 以下為已儲存的摘錄。
Internal HR system for Koolman — multi-branch car-window-film business.
Stack: Next.js 16 + React 19 + TypeScript · Tailwind 4 · Prisma 6 · Supabase (Postgres + Auth + Storage + Realtime) · Inngest · LINE LIFF + Messaging API · Vercel.
Full layout in docs/v2/architecture.md.
• docs/v2/README.md — active engineering plan
• docs/v2/architecture.md — locked decisions, schema, auth model
• docs/v2/build-plan.md — week-by-week with tests + DoD
• docs/v2/oidc-verification.md — LINE × Supabase OIDC verification (Stage 1 + 2 PASS)
• docs/v1/ — historical reference (pre-pivot)檢視完整 README ↗Internal HR system for Koolman — multi-branch car-window-film business.
Stack: Next.js 16 + React 19 + TypeScript · Tailwind 4 · Prisma 6 · Supabase (Postgres + Auth + Storage + Realtime) · Inngest · LINE LIFF + Messaging API · Vercel.
# 1. install deps (pnpm 10 required)
pnpm install
# 2. copy env template
cp .env.example .env.local
# fill in values from docs/v2/credentials.local.md (gitignored)
# 3. (later — when Prisma schema lands in W1c) apply migrations
pnpm db:deploy
# 4. dev server
pnpm dev
# → http://localhost:3000
.
├── docs/ # all planning + design docs (v1 + v2)
│ └── v2/ ← current plan
├── prisma/ # Prisma schema, migrations, seed (W1c)
├── public/ # static assets, Thai fonts
├── src/
│ ├── app/ # Next.js App Router
│ │ ├── (auth)/ ← W1b
│ │ ├── (admin)/ ← W2
│ │ ├── (owner)/ ← W5
│ │ ├── (liff)/ ← W3
│ │ └── api/ ← webhooks, cron
│ ├── components/ # shared UI (shadcn primitives go here in W2)
│ ├── lib/ # supabase helpers, audit, i18n, line, etc.
│ └── server/ # server actions, services, repositories
├── tests/
│ ├── unit/ # Vitest
│ └── e2e/ # Playwright
└── tools/
└── oidc-smoke/ # one-off Stage 2 OIDC verification — ✅ PASS
Full layout in docs/v2/architecture.md.
docs/v2/README.md — active engineering plandocs/v2/architecture.md — locked decisions, schema, auth modeldocs/v2/build-plan.md — week-by-week with tests + DoDdocs/v2/oidc-verification.md — LINE × Supabase OIDC verification (Stage 1 + 2 PASS)docs/v1/ — historical reference (pre-pivot)| Command | What it does |
|---|---|
pnpm dev | Next.js dev server |
pnpm build | Production build |
pnpm start | Production server (after build) |
pnpm lint / pnpm lint:fix | Biome lint (read / write) |
pnpm format | Biome format |
pnpm typecheck | tsc --noEmit |
pnpm test | Vitest unit run |
pnpm test:watch | Vitest watch mode |
pnpm test:coverage | Vitest unit run + coverage (src/lib) |
pnpm test:integration | Vitest integration run (needs koolman_test DB — see TESTING.md) |
pnpm test:e2e | Playwright e2e |
pnpm db:generate | Prisma client codegen |
pnpm db:migrate | Prisma migrate dev |
pnpm db:deploy | Prisma migrate deploy (CI / prod) |
pnpm db:studio | Prisma Studio GUI |
pnpm db:seed | Seed dev database |
pnpm db:reset | Reset + re-migrate (no seed) |
| Tool | What | When it runs |
|---|---|---|
| Biome 2 | Lint + format (JS/TS/JSON) | pnpm lint, pnpm lint:fix; auto on commit via lint-staged |
| TypeScript strict | Type-check (noUncheckedIndexedAccess, etc.) | pnpm typecheck; on every build |
| Vitest | Unit + integration tests | pnpm test, pnpm test:integration |
| Playwright | E2E (full-stack) | pnpm test:e2e (auto-starts dev server) |
| Next build | Full build smoke | pnpm build |
Pre-commit hook auto-runs Biome on staged files only (sub-second). Bypass with SKIP_SIMPLE_GIT_HOOKS=1 git commit ... if you really need to commit through a lint failure (e.g. WIP after a debug session).
CI runs lint + typecheck + unit + integration in parallel, then build, on every push and PR (.github/workflows/ci.yml).
See TESTING.md for the full three-tier model (unit / integration /
e2e), what belongs in each, the koolman_test DB setup, and coverage.
/liff/pair): LINE OIDC → Supabase → atomic User-bind/admin/attendance/disputed): review + Approve/Reject with required note/admin/attendance/live): Supabase Realtime + 30s polling fallback/admin/settings/leave-types)/liff/leave + new + detail with cancel)/admin/leave) + approve expands to Attendance(OnLeave) rows in one tx/liff/advance + /admin/advance — receipt photo upload deferred to W4-late)