Synaplan
기업을 위한 오픈소스 AI 플랫폼
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 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.