Synaplan
开源 AI 软件平台,面向企业:自托管 AI 代理,符合 GDPR 的聊天机器人小部件,RAG 知识库,WhatsApp 与 Outlook AI,MCP,多模型路由。支持 Docker、Kubernetes 或在 Germ 托管。
AI 翻译
尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证制作者的介绍仅有上面的一句话。 更多详情请阅读仓库 README。 仓库 README ↗
正在加载完整 README。
查看完整 README ↗Maintenance management for Stafford International School (Colombo 7): work orders, preventive maintenance, photo proof of completed work, and technician KPIs. Installable on phones as a PWA.
Stack: Next.js 15 (App Router, server actions) · Clerk (auth) · Neon Postgres · Drizzle ORM · Tailwind CSS · Vercel (hosting + daily cron)
| Role | Who | Can do |
|---|---|---|
| Maintenance Manager | Maintenance Manager | Raise work orders, assign them (one lead plus optional extra people), close or reopen completed work, preventive schedules, board, reports, manage users. Can also be assigned work |
| Admin | Owner, MD, principal, heads of section | Raise and edit work orders, track all work, board and reports, manage users |
| Supervisor | Maintenance supervisor | Track all work, board and reports (can't raise work orders). Can be assigned work |
| Technician / Driver | Technicians, drivers | See work assigned to them, start it, complete it (photos optional), comment; see everyone's open work on the Board and view Reports (read only) |
Work order flow (from the Maintenance Manager's requirements):
Preventive maintenance schedules (weekly → yearly, or custom dates each year) create work orders automatically every day at
06:00 Colombo time (vercel.json cron → /api/cron/schedules).
Reports show, per technician: assigned, completed, completion rate, open, overdue, average response time (assigned → started), average resolution time (assigned → completed), on-time rate and reopen count, plus breakdowns by type and building and a CSV export.
| Name | Required | Notes |
|---|---|---|
DATABASE_URL | yes | Neon pooled connection string |
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY / CLERK_SECRET_KEY | yes | From the Clerk dashboard (set by the Vercel Clerk integration) |
CRON_SECRET | yes on Vercel | Any random string; Vercel Cron sends it to /api/cron/schedules |
SMTP_HOST, SMTP_PORT, SMTP_USER, SMTP_PASS | for email | e.g. Gmail: smtp.gmail.com, 465, the address, an app password. Without these, emails are skipped and logged |
EMAIL_FROM | optional | e.g. Stafford Maintenance <[email protected]> |
APP_URL | optional | Link base for emails; defaults to the Vercel production URL |
npm install
cp .env.example .env.local # fill in values
npm run db:migrate # apply migrations (uses Neon's HTTP driver)
npm run dev
Schema lives in src/db/schema.ts. After changing it run npm run db:generate and commit the new
SQL in drizzle/. Production builds on Vercel run the migrations automatically (npm run build);
preview builds skip them.