Synaplan
開源 AI 平台,供企業使用:自行託管的 AI 代理、符合 GDPR 的聊天機器人小工具、RAG 知識庫、WhatsApp 與 Outlook AI、MCP、多模型路由。Docker、Kubernetes 或託管於 Germ
AI 翻譯
尚未收集儲存庫資訊。
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
製作者的介紹僅有上面的一句話。 更多詳情請閱讀儲存庫 README。 儲存庫 README ↗
正在載入完整 README。
檢視完整 README ↗Grevya's employee portal — HRIS, Performance, Exit, Leave, Attendance, Payroll, Reimbursement, Learning, Recruit, Directory, HR Helpdesk, Declarations and an HR Admin console.
Stack: Next.js 16 (App Router) · React 19 · Tailwind CSS v4 · Supabase (Postgres, Auth, Storage, Row Level Security).
Requirements: Node 20+, Docker (OrbStack / Docker Desktop).
npm install
npm run db:start # local Supabase on ports 554xx (Studio: http://127.0.0.1:55423)
npm run seed # demo organisation (add -- --reset to wipe & reseed)
npm run dev # http://localhost:3100
Demo logins (password Grevya@123): [email protected] (HR admin), [email protected] (manager), [email protected] (employee). Every seeded employee can sign in with <firstname>@grevya.com.
npx supabase login
npx supabase link --project-ref <your-project-ref>
npx supabase db push # applies supabase/migrations/*
.env.local (see .env.example):
NEXT_PUBLIC_SUPABASE_URL=https://<ref>.supabase.co
NEXT_PUBLIC_SUPABASE_ANON_KEY=<anon / publishable key>
SUPABASE_SERVICE_ROLE_KEY=<service role key> # server only
npm run seed) or just reference data + your first HR admin:
[email protected] ADMIN_PASSWORD='choose-one' ADMIN_NAME='Your Name' npm run seed -- --minimal
<your-url>/auth/callback to redirect URLs (used by password reset)..env.local already points at the hosted project oxhhwasktpgxwccwbypa (region ap-southeast-2) and includes SUPABASE_DB_URL, so:
npm run dev # app on http://localhost:3100 using the hosted DB
set -a; . ./.env.local; set +a
npm run db:push # apply any new migrations to the hosted DB
npm run smoke -- [email protected] # request every page as a role (dev server must be running)
The purple Gia button (bottom-right) answers HR questions: leave balance, holidays, payslips, attendance, pending requests, policies and FAQs, and where to find any page. It only reads data the signed-in person is already allowed to see.
ANTHROPIC_API_KEY to .env.local (and your host's environment) to switch on AI answers powered by Claude (claude-opus-5-5 by default; override with ASSISTANT_MODEL). Each question costs a small amount of API usage.Security is enforced in the database (Row Level Security + triggers), not just the UI:
role = 'hr_admin') see and manage everything.HR adds people in HR Admin → Employees and can create their login there. Anyone who signs up with an email that matches an employee record is linked automatically.
supabase/migrations/ schema, RLS policies, workflow triggers
scripts/seed.mts demo / minimal seed
src/proxy.ts session refresh + auth redirect
src/lib/ supabase clients, auth helpers, nav map, utils
src/components/ui/ UI kit
src/components/shell/ header, sidebar flyouts, search, notifications
src/app/(portal)/<module> one folder per module (pages, actions.ts, _components)
docs/CONVENTIONS.md coding conventions