ShelfWise POS & Inventory: Multi-Store Point of Sale for Small Retail | Vibe96

E-commerce & Retail

ShelfWise POS & Inventory: Multi-Store Point of Sale for Small Retail

Source code included

Full retail POS: barcode checkout, receipts, multi-store stock, purchases, transfers, returns, profit reports & Admin/Ma

Built by AT M Mahfuzar Rahman Updated 12 Nov 2026 12,443 lines of code

Open live demo Built withMeta Muse

About this software

About ShelfWise POS & Inventory: Multi-Store Point of Sale for Small Retail

ShelfWise is a server-rendered Node.js 22 / Express 4 / EJS application that covers checkout, stock, purchasing, transfers, returns and profit reporting for small retail shops. It runs on SQLite by default and switches to PostgreSQL or MySQL through the DB_CLIENT environment variable, using Knex migrations. Three roles (Admin, Manager, Cashier) are enforced through a permission map, with store-level scoping of sales, stock, transfers and reports. The package includes Docker and docker-compose (app plus PostgreSQL) files, Render and Railway config, a create-admin script, and a node:test suite covering auth, access control, sales, inventory and schema. The listed screens are web pages only; the digest shows no mobile app, payment gateway integration or multi-language support. Payments are recorded as cash or card at the till, not processed online.

Category: E-commerce & RetailStack: Express 4.22.3 with EJS 3.1.10 server-rendered views, Knex 3.3.0 query builder · SQLite 3 out of the boxBuilt with: Meta Muse Licence: Single-site, full source

Why ShelfWise POS & Inventory: Multi-Store Point of Sale for Small Retail

What makes it better
than the alternatives

  1. 01

    Server-side re-pricing

    The checkout service prices every sale from the database, so prices sent from the browser cannot be tampered with.

  2. 02

    Switchable database

    SQLite works out of the box, and PostgreSQL or MySQL are selected by one environment variable via Knex.

  3. 03

    Store-scoped access control

    Permissions live in lib/permissions.js, with cashiers seeing only their own sales and managers limited to their own store; tests check the 403 and 404 paths.

  4. 04

    Full stock movement ledger

    Sales, returns, purchases, transfers and adjustments each write a stock movement, and atomic transfers move stock between stores and warehouses.

  5. 05

    Deployment-ready package

    Includes a Dockerfile, a docker-compose stack, a production start script, a create-admin command, CSRF protection, login rate limiting, Helmet CSP headers and a Knex-backed session store.

Point of Sale

  • Barcode or SKU scan-to-add and live product search with category filters
  • Cart-level discount as an amount or a percentage
  • plus per-product tax
  • Cash payments with change calculation
  • and card payments
  • Attach an existing customer or create one quickly at the till
  • Printable receipt with a configurable footer
  • Keyboard shortcuts F2 (search) and F4 (charge)

Products & Categories

  • SKU
  • barcode
  • unit
  • cost price
  • selling price
  • taxable flag and low-stock level
  • Colour-coded categories
  • Products with sales
  • purchase or transfer history cannot be deleted and must be marked inactive
  • Zero-stock rows are created for every store when a product is added

Inventory

  • Stock per store or warehouse
  • with stock value at cost and at retail
  • Low-stock and out-of-stock filters
  • Manual stock adjustments with a note
  • Movement ledger filterable by reason (sale
  • return
  • purchase
  • transfer in/out
  • adjustment)

Purchases & Suppliers

  • Supplier records
  • Receive stock into a store with dynamic line items and a running total
  • Optional update of product cost prices on receipt
  • Purchase list and detail pages with reference numbers

Stores & Transfers

  • Multiple stores and warehouses
  • where warehouses cannot make POS sales
  • Stock transfers between locations with reference numbers
  • Non-admin users can only transfer out of their own store

Sales & Returns

  • Sales history filtered by date
  • store
  • payment method
  • status and search
  • Sale detail pages and receipt reprint
  • Full or partial returns with reasons and a refund amount
  • Sale statuses: completed
  • partially returned
  • returned

Customers

  • Customer records with name
  • phone
  • email
  • address and notes
  • Customer detail page with purchase history and totals
  • JSON lookup endpoint used by the POS screen

Reports & Dashboard

  • Dashboard with today and month-to-date figures
  • a 14-day series
  • top products
  • recent sales and low-stock list
  • Reports with summary
  • daily and monthly charts (Chart.js)
  • top products
  • and breakdowns by payment method and by category
  • Date-range filter and per-store filter for admins
  • CSV export of the daily series

Users & Settings

  • Admin
  • Manager and Cashier roles
  • User management with activation
  • password reset and store assignment
  • which signs the user out of existing sessions
  • Self-service password change on the account page
  • Shop details
  • currency
  • tax label and rate
  • and default low-stock level settings
  • Configurable report timezone via APP_TIMEZONE

Quality report

Manually reviewed

86/ 100

Automated audit score

✓ Approved by our review team

Listed after manual review.
Audit run: 26 Oct 2026
Reviewed by Vibe96 staff, Dubai.

Security84
Code structure88
Docs & completeness73
Dependency health90
Build & deploy88
Reviewer notes (3 minor)

Small improvements the developer has been told about. None of them stop the software from working.

Versions & updates

1.0.0
First release12 Nov 2026✓ Reviewed & audited

No updates yet. New versions appear here with a changelog.
Buyers receive updates free for 1 year.

Quality report

What you get

  • </>Full source codeThe complete audited source, delivered as a download from your account. No obfuscation.
  • ▤DocumentationSetup guide, architecture notes, CLAUDE.md and AGENTS.md.
  • ↻One year of updatesEvery new version the builder publishes, free for 12 months.
  • ♧30 days of supportInstallation and defect support through Vibe96 tickets.
$149Single-site licence Details