Skip to content

About

Free, open-source POS builder — answer a few questions, download ONE self-contained HTML file, and own the code forever. No subscription, no lock-in, works offline. Restaurant, retail, salon, dry cleaner, repair shop, jewelry.

Topics

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

179 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

customPOS

Build your own point-of-sale. Download it. Own the code.
A free, config-driven POS builder — then customize it locally with Claude Code.
No subscription. No lock-in. Your software, your machine, your data.

tests

customPOS owner dashboard — a day's sales, expenses and net profit
The back-office dashboard: a full day's money story — sales, cost of goods, labor, expenses, and the real bottom line.

customPOS front-counter register — a full restaurant menu, themed to the shop's brand
The front counter — a real restaurant menu, the whole accent themed to the shop's own brand color, one self-contained file.


Status: working product, active build. The public home of customPOS — generalized from a real single-file POS that ran a two-location wet cleaner (now runnable here as the Single-PC Edition). A landing page, a builder wizard, a gallery of 24 ready-to-run trade templates, a full-featured engine, a sync hub, and a payments seam are all live and tested (104 test suites, zero console errors). Star/watch to follow along. New here? The road here is the honest history + a whole-platform snapshot. How the origin shop still changes its live POS by asking Claude: Built with Claude.

What this is

Most point-of-sale software is something you rent: a monthly subscription, your data on someone else's server, and no way to change how it works. customPOS is the opposite.

You go to the builder, answer a few questions about your business, and download a single self-contained file that is your POS. It runs in a browser, stores its own data, needs no install and no build step — and the source code is yours. Keep it forever. Change anything. Owe no one.

Think Webflow or Squarespace — but you download and own the actual working code, not just the markup.

Why it works this way

  • One file, zero build, runs offline. No servers to rent, no dependencies to break. Open it in Chrome and it works.
  • You own it. MIT licensed. Download it and it's yours — no account required to keep using it.
  • Customize it with AI. The download comes with its own map (a CLAUDE.md + code guide) so you can point Claude Code at the file and change prices, workflows, receipts, or anything else — in plain English, on your own computer.
  • Modular. Turn on only what your business needs — inventory, delivery routes, staff time-clock, checklists, and more — and leave the rest off.

How we keep it free

The software is free and always will be. We make money only when you do — through an optional, built-in card-payment integration. If you choose to accept card payments, you sign up through our processor partner and we earn a small share of the processing that already costs you money no matter whose POS you use. Don't want card payments? The POS is still 100% free and fully yours. No paywalls, no feature gates, no subscription.

Software is free. Knowledge is free. This project is a deliberate stance on how technology — and AI — should serve people: by helping them own their tools, not rent them.

The card-payment module the free model rests on has a validated blueprint in docs/PAYMENTS-MODULE.md — a processor-agnostic interface with a certified CardConnect/CardPointe reference adapter, PCI-safe by design (the browser never touches a card number; credentials live only on the business's own server, never in the downloaded file).

Who it's for

Small businesses that want a real POS without a monthly bill or a vendor holding their data hostage — service shops (dry cleaners, laundromats, alterations, repair), food (cafés, a real burger joint with a kitchen display), retail (inventory, barcodes, receipts), and appointment/service businesses (salons with staff, commission, and a booking calendar). More business types to come.

The Single-PC Edition — the real one, in one file

customPOS was generalized from a real point of sale that ran a two-store wet cleaner from June to September 2026. When that shop moved to its multi-computer successor on 30 September, the old version wasn't thrown away: it lives on as the Single-PC Edition — single-pc/ozark-pos-single-pc.html, one file that runs a dry-cleaning counter on one computer. Landing page: custompos.org/single-pc.html.

  • Download it, double-click it. No server, no account, no install, no internet — it makes zero network requests, from disk or hosted (a test proves both: tests/single-pc.js).
  • It is the app that ran the shop, not a rewrite: drop-off → detail → assemble → rack → pickup, house accounts and statements, cash drawers, route board, time clock and payroll. Cash, check, and cards run on your own stand-alone terminal (you type its approval code).
  • Honest limits. Texting, emailed statements, a connected card reader, pay links, the customer tracker, photos, QuickBooks and multi-computer sync need a server — they are hidden and labelled, never faked. Data lives only in that browser on that computer; there is a full backup to one file, but no one-click restore.
  • Starts empty: no customers, sample staff (PINs in the read-me), placeholder store details and a sample dry-cleaner price book. MIT.
  • Next: a modular multi-station edition built from the shop's newer system.

Its readable source and its own test gates are in reference/ozark-pos/ — see docs/OZARK-REFERENCE.md.

Built with Claude — a live shop, changed by asking

The shop customPOS grew out of, Ozark Cleaners (a two-store wet cleaner in Arkadelphia and Hot Springs, Arkansas), runs on point-of-sale software built with Claude, the AI made by Anthropic, and still changes it this way. The owner says what he wants in plain words; Claude Code changes the live system, writes a proof named after the request, and the deploy goes live only if the whole suite passes on the server. The full story, with the real requests, the safety rails and the honest limits: custompos.org/built-with-claude.html (built-with-claude.html).

As of Oct 12, 2026, counted from the shop's git history, desk logs and test file:

  • 94 commits to the live system since Oct 1, on 9 of the 12 days (13 on Oct 12 alone).
  • 1,226 proofs, 0 failed on Oct 12. Since the Sept 30 switch, 91 proof sections have been added, and 43 of the 50 headings that group them quote the owner's request.
  • 48+ builds named live in the desk logs since the switch, and at least 6 deploys refused by the server's full test run, with the shop keeping its running build each time.
  • 2,082 of 2,128 commits since June 20, 2026 carry a Co-Authored-By: Claude line.

Money stays with the owner (refunds, voids and credits are owner-only on the shop's server, store credit needs a PIN the server checks, and Claude can only suggest a credit), every data fix goes through the app's own functions onto its activity log, and the rule is that builds go live at 7 PM Central unless the owner says go (a discipline the sessions follow, not a lock). The shop's own repositories are private, and its current multi-station system is not in customPOS yet (the plan). A test, tests/claude-spotlight.js, holds the page's FAQ markup to its visible FAQ, checks every link, and guards it against private details.

Claude is made by Anthropic. customPOS is independent and not affiliated with Anthropic.

What's built

  • ✅ Landing page — index.html: the customPOS.com front door — the pitch, the honest monetization story, and the trust FAQ every owner asks. One self-contained file, light/dark.
  • ✅ Config-driven engine — pos.html, one self-contained file. Everything below runs on it by config alone — a cleaner, a diner, a shop, and a salon on the exact same code:
    • Money: cash + change, cards (PCI-safe), house accounts (A/R), sales tax, discounts + coupon codes, tips + commission, deposits, split checks, refunds/voids, printable receipts.
    • Back office: end-of-day Z-report (by tender / category), cash-drawer count, labor hours, sales history day by day, reorder + A/R statements.
    • Operations: inventory (stock, low/out, receive), barcode scan + search, appointments (book → check-in), kitchen display with bump + prep timers, floor / table plan (a spatial state machine — tables, salon chairs, auto bays, spa rooms), quotes/estimates, checklists, capacity/pacing, per-item routing & fan-out, timers/SLAs, flags, modifiers, 86 counts.
    • People & customers: staff time-clock + PIN + clock-in welcome, roles/tips/commission, customer profiles + "the usual", loyalty + gift cards, text-when-ready, status board + customer tracker.
    • Worker rights (defaults tilt toward the worker): staff scheduling (weekly grid, OT flag, publish → text), breaks + real-time earnings with meal/rest reminders, time-off requests, shift coverage (no double-book / no hidden OT), incident reports + 🆘 panic alert, tip pooling by hours, and a worker portal — your own schedule, hours, and a pay estimate with overtime shown at 1.5×.
    • Business health (survive the hard days): labor as % of sales with a high-payroll flag, gross margin (cost of goods → real profit), top items by sales + margin, busy-hours bars to staff the rush, and a win-back list that re-invites lapsed regulars in one tap.
  • ✅ The builder — builder.html: pick a trade, deep-configure clickable workstations & items, download your POS plus a generated CLAUDE.md. A gallery of 24 starter templates — retail, café, dry cleaner, repair, salon, bar, dispensary, bakery, butcher (by-weight), pizzeria, florist, laundromat, tattoo studio, the real Hamburger Barn, a full-service restaurant with a floor plan, and more — each ships with its trade's features already on. Many were seeded by AI personas role-playing real owners; contributing a new one is the easiest way to help. Live preview.
  • ✅ Payments — a processor-agnostic interface. Out of the box, with no processor connected, a card sale is recorded on the order (books and drawer stay right) — it never fakes an approval or a card number. The certified CardConnect/CardPointe adapter (docs/PAYMENTS-MODULE.md) swaps in on your own server to actually charge cards. Onboarding a new merchant is one command: tools/validate-cardconnect.js runs the full Fiserv Integration-Validation transaction gauntlet against your UAT credentials and prints every retref mapped to the form's boxes (credentials come from env vars — no secrets in the repo).
  • ✅ Payments service (any POS) — payments/pay-server.js: a standalone, zero-dependency card-processing microservice. Gives customPOS or a third-party POS certified CardConnect payments behind one neutral REST API (/charge, /refund, /void, /inquire, terminal + hosted-tokenizer) — PCI SAQ-A (card data never touches it), a shared-key gate, and a simulator so you can integrate before any merchant account exists. Full guide: payments/README.md.
  • ✅ Multi-device hub — hub.js, a zero-dependency Node sync server so several devices (each a different station) share one live POS. Sync is opt-in (?hub=…); the downloaded POS is fully local otherwise.
  • ✅ One-click build — node build.js → dist/custompos.html, a single self-contained file that runs the whole builder with no server (host it anywhere as customPOS.com).
  • ✅ Tested — 58 browser test suites in tests/, each driving the real app, all green with zero console errors.

Next: the worker portal on personal-device auth, calendar-dated PTO balances, and hosting customPOS.com. The whole build story is in JOURNAL.md.

Try it

  • The landing page: open index.html.
  • Just the builder, no server: node build.js then open dist/custompos.html.
  • Builder + engine over http: python3 -m http.server 8000 → visit http://localhost:8000/builder.html.
  • The demo engine: open pos.html directly to play with the demo trades.
  • The Single-PC Edition: open single-pc/ozark-pos-single-pc.html directly (Chrome or Edge) — a real dry cleaner's POS, one file, one computer.
  • Share a POS across devices: node hub.js then open http://<host>:8090/pos.html?hub=http://<host>:8090 on each device.

Run the tests

npm install
npx playwright install chromium              # playwright-core ships no browser
export CHROMIUM_EXE="$(node -e "console.log(require('playwright-core').chromium.executablePath())")"
npm test                                     # runs every tests/*.js, fails on any console error

CI runs the same suite on every push (see the badge above). A GitHub Pages workflow publishes the landing page + builder + demo engine (.github/workflows/pages.yml).

License

MIT © Brayden Sanders. Free to use, modify, and redistribute. When you download your POS, it's yours.

About

Free, open-source POS builder — answer a few questions, download ONE self-contained HTML file, and own the code forever. No subscription, no lock-in, works offline. Restaurant, retail, salon, dry cleaner, repair shop, jewelry.

Topics

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages