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
翻訳待ち
No updates detected yet. GitHub releases will appear here.
Loading the full README. The saved excerpt is shown below.
Label Print Tracker — Production Job Tracker
Production tracking for a label printing business. One system covers the whole
journey of an order: from the purchase order landing on a desk, through
prepress, the presses, slitting, QC and packing, to the labels leaving the
building — plus a public portal where the customer can follow their own order
without phoning anyone.
Built for the floor, not for a boardroom. Every screen answers "what is the
status of this job, and who is holding it up".Read the full README ↗Production tracking for a label printing business. One system covers the whole journey of an order: from the purchase order landing on a desk, through prepress, the presses, slitting, QC and packing, to the labels leaving the building — plus a public portal where the customer can follow their own order without phoning anyone.
Built for the floor, not for a boardroom. Every screen answers "what is the status of this job, and who is holding it up".
Stack: Next.js 14 (App Router) · TypeScript · Supabase (Postgres + Auth + RLS) · Tailwind CSS v3 · GSAP · deployed on Vercel
The same job data is presented twice, in two different vocabularies.
Staff — /admin (authenticated)
The control room. Every job, every stage, every internal note, machine queues,
shelf stock, analytics and CSV export. Department login decides what can be
changed.
Customers — /track (public, no login)
A customer types their PO number and sees a clean pipeline of where their order
is. Internal notes, machine assignments, other customers' work and anything
commercially sensitive never cross into this view — it reads from dedicated
Postgres views (client_job_view, client_status_log_view), not from the
jobs table directly.
Shop floor — /display (authenticated)
Wall-mounted screens for the production rooms, showing the live queue per
machine. Auto-refreshing and designed to be readable across a room.
New, Repeat and Artwork Changed. Repeat orders
automatically skip the sample and shade-card stages, which a repeat has
already been through.AUG26-1, AUG26-2),
allocated by a Postgres counter table so two people adding jobs at the same
moment cannot collide.Printed labels that physically exist on a shelf, in three kinds:
| Kind | Meaning |
|---|---|
Remaining | Unshipped balance of a partially dispatched order — already promised to that job |
Extra | Surplus beyond the order: press over-run, or spares from a reprint |
Manual | Stock someone found that the system never knew about |
Stock rows outlive the jobs they came from (ON DELETE SET NULL, with job
identity snapshotted onto the row) — closing a PO a year later must not erase
the record of 40,000 labels sitting on a rack.
Remaining stock is reported separately and excluded
from the usable figure, since it belongs to an open order.Sixteen stages. Fourteen are sequential; On Hold and PO Closed sit outside
the sequence.
| # | Stage | Owner |
|---|---|---|
| 1 | PO Received | Prepress |
| 2 | Artwork Pending | Prepress |
| 3 | Plate Status | Prepress |
| 4 | Job Card Done | Prepress |
| 5 | Sample Printing | QC |
| 6 | Shade Card Sent | QC |
| 7 | Shade Card Approved | QC |
| 8 | In Printing | Production |
| 9 | Slitting | Postpress |
| 10 | Quality Check | QC |
| 11 | Packing | Dispatch |
| 12 | Ready to Dispatch | Dispatch |
| 13 | Partial Dispatch | Dispatch |
| 14 | Dispatched | Dispatch |
| — | On Hold | Production / Postpress |
| — | PO Closed | Admin only |
This is the beginning of the README. Read the rest at the original. Read the full README ↗