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
Maintenance work orders for Stafford International School
Translation pending
BusinessTypeScript · JavaScriptGitHub @kmchmkOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
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 ↗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.