Skip to content

Print-shop production on a tested, self-hosted ERP

ERPNext runs a textile print shop's orders, RIP print queue, and shipping on a tested, self-hosted NixOS server, connected to its online store.

Textile & home-decor printingERPNext · NixOS · WordPress
Industry

Textile & home-decor printing

Platform

ERPNext · NixOS · WordPress

Stack

ERPNext, Frappe, Python, TypeScript, Vue, Caldera RIP, ShipStation, 17Track, and 8 more

The challenge

This manufacturer prints fabric and home-decor products to order. Every order is a small production job: find the right design, set it up for the printer, print, pack, and ship. Printing, work orders, and shipping are the business, so the system that runs them can't go down and can't drift.

When the shop came to us, it had no shop-floor management and no data system beyond its files and folders. Print files arrived by email and were copied, moved and torn apart by hand, and nobody could easily track which prints had shipped to which customers.

The goal was a production system the team could trust: print control inside the ERP, automated hand-offs from order to shipment, code that's tested before it ships, and a server the shop owns.

What we built

ERP-to-RIP printing

Printing moved from external tools into a server-integrated Caldera RIP workflow. A live print-queue screen in the ERP gives operators detailed, real-time control over the queue. Nesting logic lays out fabric, samples, and wallpaper efficiently, and printer profiles live in the ERP next to the products that use them.

Order automation

Online-store orders arrive through ShipStation and are processed into the ERP on a schedule. Work orders, packing slips, and shipping flow from there, with 17Track following each package after it leaves.

Vendor pipeline

Some products ship from partner vendors. The ERP routes those orders, lets vendors upload design files, and keeps drop-shipped orders in sync through ShipStation.

Floor tools

Portal pages for print-queue management, packing bins, and shipping put the right screen in front of the right person on the floor.

AI-assisted quality checks

AI image flagging marks likely quality problems in print files for a person to review, using models that run on the shop's own hardware.

The online store

We also build and maintain the shop's WordPress and WooCommerce store, including a trade program. Designs managed in the ERP publish to the store, so product data is entered once.

Self-hosted platform

The ERP runs as a NixOS service on a dedicated production server, with centralized identity and file sharing, offsite cloud backups, secure remote file access through Cloudflare, and separate VM test environments.

Results

Order intake, print control, and shipping now run in one system, and the floor team works from screens built for their steps. The custom code has gone from hard to change to well covered by tests: more than 800 automated tests at about 90% line coverage, with a coverage floor that may rise but never fall. Running ERPNext's own regression tests against the shop's customizations turned up three real bugs, including one in a vendored storage app that blocked stock cancellations for ordinary users. All three are fixed.

  • Online-store orders reach the ERP through ShipStation and move into production automatically
  • A live print-queue screen gives the floor real-time control over what goes to the Caldera RIP
  • More than 800 automated tests, at roughly 90% coverage, guard the shop's custom code
  • Running ERPNext's own test suite against the customizations surfaced three real bugs, all fixed
  • The ERP runs as a declared NixOS service on the shop's own server, with offsite backups
  • Designs managed in the ERP publish to the online store without re-entry

Because the whole server is declared in code, it can be rebuilt, tested in a VM, and audited. The shop owns the hardware, the data, and the code.

Under the hood

  • ERPNext
  • Frappe
  • Python
  • TypeScript
  • Vue
  • Caldera RIP
  • ShipStation
  • 17Track
  • WordPress
  • WooCommerce
  • NixOS
  • Backblaze B2
  • Cloudflare
  • FreeIPA
  • Samba
  • Ollama

ERPNext on Frappe v16, customized through a dedicated app plus jailbreak for the rare low-level override. Core apps are never forked. Controllers for Sales Order, Work Order, Stock Entry, and other core doctypes are typed, class-based overrides.

Quality gates

Ruff and ty for Python; oxfmt, oxlint, and strict TypeScript for the front end. CI evaluates the Nix environment and runs lint on every push.

Testing

An integration harness with document factories, fakes for external services (cloud storage, Cloudflare KV, ShipStation), and a frozen clock for date-dependent reports. Money reports are checked against hand-worked numbers, not shape.

frappe-nix declares the whole bench, dev services, and the NixOS production service in one flake.

carbon_frappe gives the desk and portal a consistent Carbon Design System look.

Storage and integrations

Backblaze B2 behind Cloudflare's CDN for design files; ShipStation for order intake and drop-shipping; 17Track for tracking; log export for monitoring and alerting.

Identity and files

FreeIPA with Samba integration for staff accounts and shares.

Open source it's built on

All open-source projects
NixOS

frappe-nix

Reproducible Nix infrastructure for Frappe and ERPNext, from the development shell to OCI containers and a multi-site NixOS module.

Frappe

Carbon Frappe

A complete IBM Carbon Design System theme for Frappe and ERPNext, covering the desk, website, login, email, charts, and tables.

Frappe

Jailbreak

Power-user tools for Frappe and ERPNext admins, including bulk merge, item-to-variant conversion, and version restore, each gated behind a setting.

“”

Have a challenge like this one?

Tell us how your work flows today and where it hurts. We'll tell you honestly whether ERPNext, Odoo, or something custom fits, and what a first phase could look like.