tngoman/Store-POS
tngoman/Store-POS has 1,054 GitHub stars and 470 forks. GitHot measured -1 stars in 24 hours. Last checked 2026-11-09 11:29 UTC. Last push 2026-10-25.
Modern Electron Point of Sale — React till, Express + SQLite API, LAN multi-terminal, catalog/photos, and Windows installer.
Measured star growth
- in 24h
- -1
- in 7 days
- Collecting history
- in 15 days
- Collecting history
- in 1 month
- Collecting history
Net star changes over overlapping periods, not daily totals. Missing measurements are left blank. Stars measure attention, not software quality.
README.md
OriginalStore POS
Modern desktop Point of Sale for a single register or a LAN of networked tills. Version 2.0 rebuilds the original Electron app on a secure, maintainable stack.
Features
Till
- Barcode scan / search (Enter to add)
- Category filter chips
- Product tiles with photos, price, and stock status
- Cart with quantity controls, discount, and tax
- Customer picker with quick-add
- Hold / resume sales
- Cash payment pad with South African note shortcuts (R10–R200) plus Exact
- Card payment (exact tender)
- Change / still-due display
- Printable receipt
Catalog
- Products and categories
- Inventory tracking
- Photo picker (local upload + Pexels download to a local media library)
- Seed demo sample catalog (SA-style products & customers)
- Multi-select bulk delete
Sales
- Transaction history filtered by date range, cashier, till, and status (paid / held)
Customers & Team
- Customer records
- Staff accounts with permission flags (products, categories, sales, users, settings)
Settings
- Store identity (name, address, contact, logo, receipt footer)
- Currency symbol and optional tax
- Operating mode (Standalone / Network Server / Network Terminal)
- Till number
- Pexels API key for catalog photos
- Demo data seed / full catalog & sales wipe
Tech stack
| Layer | Technology |
|---|---|
| Desktop shell | Electron 33 (contextIsolation, preload bridge — no nodeIntegration) |
| UI | React 18 + TypeScript + Vite 6 |
| API | Express |
| Auth | JWT + bcrypt |
| Database | SQLite via sql.js (no native build toolchain required) |
| Installer | electron-builder (Windows NSIS) |
Requirements
- Node.js 18+ (20 LTS recommended)
- Windows for the packaged installer (
npm run dist);npm run devworks wherever Electron runs
Quick start
npm install
npm run dev
Default login:
| Username | Password |
|---|---|
admin |
admin |
Change the admin password after first login in a production deployment.
Till shortcuts
| Key | Action |
|---|---|
| Enter | Add scanned / searched item |
| F2 | Open payment (charge) |
| F4 | Held sales |
| Esc | Close payment modal |
Operating modes
Configure under Settings → Register. Restart the app after changing mode.
| Mode | Behavior |
|---|---|
| Standalone | Local API + SQLite on this PC (127.0.0.1:8001) |
| Network Server | Same database, API bound to 0.0.0.0:8001 so other tills can connect |
| Network Terminal | No local DB; connects to the server IP you enter |
Typical LAN setup:
- On the back-office / main PC → Network Server, note the LAN IP shown in Settings.
- On each till PC → Network Terminal, set Server IP to that address, assign a unique Till number.
- Restart both apps.
Scripts
| Command | Description |
|---|---|
npm run dev |
Vite + Electron (development) |
npm run build |
Production UI build into dist/ |
npm start |
Electron against an existing build / config |
npm run smoke |
API + LAN smoke tests |
npm run dist |
Build UI and create Windows installer |
Installer output:
release/Store POS Setup 2.0.0.exe
Project layout
electron/ Main process + secure preload (window.pos)
server/ Express API, sql.js database, route modules
routes/ inventory, categories, customers, users, settings,
transactions, media, demo
src/ React UI
pages/ Till, Catalog, Sales, Settings, Login
components/ Payment pad, photo picker, customer select, …
layout/ App shell / sidebar
api/client.ts HTTP client
scripts/ Smoke tests
build/ App icons for the installer
public/favicon.ico Packaged favicon
Data and uploads live under Electron userData (not in the repo), so uninstalling may leave a database folder depending on OS settings.
Demo data
From Catalog or Settings → Demo data:
- Seed demo — adds sample categories, products, and customers if those names do not already exist
- Bulk delete (Catalog) — delete selected products
- Bulk delete catalog & sales (Settings) — removes products, categories, sales history, and customers except Walk-in; keeps staff and settings
API overview
Local API base (standalone): http://127.0.0.1:8001/api
| Area | Examples |
|---|---|
| Auth | POST /users/login |
| Catalog | /inventory/products, /categories/all |
| Sales | POST /new, GET /by-date, GET /on-hold |
| Media | /media/library, /media/pexels/search |
| Demo | POST /demo/seed, POST /demo/clear |
Authenticated routes expect Authorization: Bearer <token>.
Security notes
- Renderer has no Node integration; privileged actions go through the preload bridge.
- Change default
admincredentials before real use. - Prefer Network Server only on a trusted LAN; put a firewall in front for wider exposure.
- Pexels key is stored in settings on the server machine — treat it like a secret.
Troubleshooting
| Issue | What to try |
|---|---|
Blank window / window.pos missing |
Use Electron via npm run dev, not a plain browser tab |
| Terminal cannot reach server | Same LAN, correct server IP, mode = Network Server, port 8001 open |
| Sales history empty | Date filters use local time; default range is month start → end of today |
| Media library 404 after code changes | Restart Electron so the API process reloads new routes |
| Native module / SSL build errors | This project uses sql.js deliberately to avoid better-sqlite3 compile issues |
License / authorship
Desktop POS application maintained for store use. See repository history for contributors to the original and 2.0 rewrite.
Explore related projects
freeCodeCamp/freeCodeCamp
freeCodeCamp.org's open-source codebase and curriculum. Learn math, programming, and computer science for free.
458,821 starsdonnemartin/system-design-primer
Learn how to design large-scale systems. Prep for the system design interview. Includes Anki flashcards.
377,440 starsreact/react
The library for web and native user interfaces.
252,444 starsvuejs/vue
This is the repo for Vue 2. For Vue 3, go to https://github.com/vuejs/core
212,624 stars