Craftivus is a retail-first Point-of-Sale SaaS platform built on ERPNext/Frappe. This wiki is the single source of truth for how the platform is built, how to set it up, and how to operate it — for engineers and for the people who use it day to day.
Craftivus is four separate codebases that together form one product:
| Codebase | What it is | Who uses it |
|---|---|---|
| craftivus_core | A Frappe app installed inside each customer's own ERPNext site. The API boundary between everything else and ERPNext. | Nobody directly — it's the backend every other app talks to. |
| craftivus-pos | A Tauri (Rust + React) desktop application. The offline-first till. | Cashiers, at the physical point of sale. |
| craftivus-manager | A React web app, served same-origin from the customer's own ERPNext site. | Shop owners / outlet managers, for their own outlet. |
| craftivus_subscription | A separate Frappe/ERPNext site, internal to Craftivus. Manages every customer's account, billing, and device fleet. | Craftivus staff only — never a customer. |
A single customer's deployment is: one ERPNext site running craftivus_core, one or more instances of craftivus-pos (one per till), and craftivus-manager served from that same site. Craftivus staff manage that customer's subscription from the separate, central craftivus_subscription site.
No customer-side person ever sees a Frappe-rendered page. Not Desk, not a portal page, nothing. Every screen a cashier, manager, or shop owner sees is rendered by a Craftivus-built application talking to craftivus_core's own versioned API. This is documented formally as ADR 0001 and it is the reason almost every architectural choice on this platform looks the way it does — including why craftivus-manager is a web app served same-origin rather than hosted independently, and why Craftivus staff (who do get real Frappe access) operate from an entirely separate site.
Wherever ERPNext already models something correctly — accounting, stock ledgers, tax calculation, return/credit-note logic, recurring subscription billing — Craftivus reuses it directly rather than reinventing it. Craftivus only builds new doctypes and new logic for the things that are genuinely Craftivus-specific: device identity, offline sync, cashier PIN auth, shift cash reconciliation, and the cross-application integration between a customer's site and Craftivus's own subscription-management system. This "ERPNext-first" principle shows up throughout the codebase and throughout this wiki.