Overview
Printcess is a SaaS system for document print shops. Customers order prints from the shop's LINE Official Account without installing any app:
they pick files, choose print settings, pay with PromptPay, and the job is sent to the printer in the shop automatically.
Shops no longer collect files over chat, calculate prices by hand, or send each job to the printer themselves.
Four parts
- Customer ordering page (LINE LIFF) — upload PDFs or images, choose paper size, color, double-sided and copies, see the price instantly, pay with a PromptPay QR code, and track order status and queue position in real time
- Backend — the core API, which also verifies bank transfer slips in-house (QR decoding + OCR), manages the print queue, and sends LINE notifications to customers and admins
- Shop app (Windows) — claims jobs from the queue, downloads files, prints and reports results, with screens for pricing, business hours and printer setup
- Admin app (desktop) — manages every shop in one place: orders, payments, print jobs, each shop's machines, refunds and reprints
Technical highlights
- Knows what the printer is actually doing — reads printer and job status directly from the Windows Print Spooler in Rust, so it detects paper jams, empty trays or an offline printer mid-job and waits for the shop to fix it instead of dropping the job
- No duplicate prints, no lost jobs — each job is leased to one machine, the app records a job to disk before printing, and tells the server once the job has gone to the printer. If a computer dies mid-job, the order is flagged for a person to check instead of being reprinted automatically
- Every screen updates instantly — a single realtime hub fed by PostgreSQL pushes changes over Server-Sent Events: new jobs are picked up within a fraction of a second, and the customer, shop and admin screens refresh on their own
- Slip verification without paid services — decodes the QR code on transfer slips to reject duplicates and reads the amount with OCR
- Multi-tenant on one system — each shop's data is isolated with Row Level Security, functions are locked down from unauthenticated callers, and every shop's pricing lives in the database with validation
- Automatic app updates — releases are cut with a Git tag, CI builds digitally signed installers, and every shop updates on its own
- Quality — 170+ automated tests (including fuzz tests for the printer queue tracker), CI on every push, and a check that rebuilds the database from the full migration history so new shops can always be set up