Skip to content

prodigalwon/WindowsPointofSale

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Point of Sale

A desktop point-of-sale and inventory management system built for Pet Supply, powered by Tauri (Rust + React) with a local SQLite database. Designed for barcode-driven checkout workflows, customer loyalty tracking, and deep inventory analytics — no internet connection required.


Tech Stack

Layer Technology
Frontend React 19, React Router 7, Tailwind CSS 4, Vite
Backend Tauri 2, Rust, Tokio async runtime
Database SQLite with WAL journaling via sqlx
Auth bcrypt password hashing
File import calamine (Excel/ODS), csv
Backups PowerShell USB drive detection

Features

Point of Sale

  • USB barcode scanner integration with real-time input capture
  • Add items by scanning UPC or manual product selection
  • Tax calculation and live cart totals
  • Customer lookup with autocomplete (search by nickname, name, or phone)
  • Loyalty points: earn 1 point per dollar spent; redeem at 100 points for a free treat
  • Handles duplicate UPCs (prompt to choose the right product) and products without a UPC (manual selection modal)
  • Transaction completion screen with points summary

Price Lookup

  • Scan or search products by UPC, name, brand, or keyword
  • Full product detail cards: brand, flavor, weight, format, category, SKU
  • Price-per-unit calculation — automatically derives cost per oz, fl oz, or per unit based on weight and base unit
  • Side-by-side product comparison
  • Ingredient data displayed inline

Ingredient Search

  • Search products by ingredient — include and exclude lists, comma-separated
  • Results highlight which ingredients matched
  • Useful for customers with dietary restrictions or specific feeding preferences

Product Management

  • Full CRUD for products with fields: name, brand, flavor, weight, format, category, SKU, UPC, price, keywords, description, thumbnail URL
  • Format options: canned, kibble, freeze-dried, frozen, broth, treat, leashes/collars, bottle, toy, dehydrated, topper
  • Barcode scanner integration in admin for quick product lookup
  • Active/inactive flag (soft delete)
  • Duplicate product detection and atomic merge — reassigns all transaction history, costs, and ingredients to the surviving product

Customer Management

  • Full CRUD: nickname (unique), full name, phone, email, Astro ID
  • View and edit loyalty point balances
  • Full loyalty event history (earn / redeem / manual adjust)
  • Admin manual point adjustment with notes
  • Astro Loyalty API integration stub (ready for credentials)

Excel / CSV Import

  • Supports .xlsx, .xls, .ods, and .csv
  • Raw preview of headers and rows before mapping
  • Auto-detection of column mappings based on header names
  • Format normalization: e.g., "freeze dry"freeze_dried
  • Price parsing: strips $, commas, and other formatting
  • Base unit detection from weight field patterns
  • Preview parsed rows before committing
  • Separate price update mode — updates prices on existing products without touching other fields

Inventory Housekeeping

  • Per-product activity report with:
    • Last sale timestamp (all-time)
    • Last price lookup timestamp (all-time)
    • Units sold in a configurable time window
    • Price lookup count in a configurable time window
  • Time window filtering: days, weeks, months, years
  • Status categories: never sold, scanned but not sold, both, neither
  • Identify slow-moving or obsolete stock at a glance

Analytics & Reporting

Sales Analytics

  • Daily chart of units sold, transaction count, and price lookups
  • Automatic aggregation by day / week / month based on selected window

Customer Analytics

  • Top customers leaderboard ranked by total spend
  • Per-customer summary: visit count, total spend, average spend per visit
  • Customer spending/visit timeline with daily data points

Transaction Management

  • Search transactions by ID, customer name, or date
  • Full detail view: line items, prices, tax, total, points earned/redeemed, void status
  • Void transactions (non-destructive soft delete)
  • Remove individual line items from a transaction

Backup & Data Safety

  • Scheduled daily backup at 6 PM — automatically detects and writes to the last-used USB drive
  • Manual backup — detect all connected removable drives, show label and free space, choose destination
  • Preferred drive memory (persisted in admin_config)
  • Retry and format-and-retry options for problem drives
  • BackupAlert component shows backup status notifications in the UI

Database Management

  • Export the SQLite database as a file
  • Restore from a backup file (full database import)
  • Full database wipe / factory reset

Admin Panel

  • bcrypt-hashed password protection for all admin features
  • First-time logon indicator on fresh installs
  • Change password at any time
  • Tab-based navigation covering all management features

Data Architecture

Database Schema

Table Purpose
products Product catalog with soft-delete (active flag)
product_costs Cost-per-unit per product
customers Customer profiles with loyalty balance
loyalty_events Append-only loyalty history (earn / redeem / adjust)
transactions Sale records with void flag
transaction_items Line items per transaction
product_ingredients Ingredient strings per product
product_activity_log Append-only event log for all product interactions
admin_config Single-row config (password hash, preferred backup drive)

Data Management Highlights

  • SQLite with WAL — Write-Ahead Logging for concurrency safety and crash recovery
  • Foreign key constraints enforced at the connection level
  • Append-only event logproduct_activity_log records every creation, modification, price lookup, and purchase, enabling full historical analytics without data loss
  • ACID transactions — sale submission, product merges, and transaction voids are fully atomic
  • Soft deletes — products and transactions are flagged inactive/voided rather than removed, preserving history
  • ISO-8601 UTC timestamps throughout
  • Indexed queries — activity log indexed on (product_id), (event_type, created_at), and (created_at) for fast analytics

Storage Location

Windows: C:\Users\<user>\AppData\Roaming\Jackie POS\jackie_pos.db

No cloud sync. All data is local. Backups are file-based (USB or exported .db file).


Application Screens

Screen Route Description
Home / Logo, status indicator, navigation to the three main modes
Sale /sale Full checkout flow with barcode scanner and loyalty
Price Lookup /price-lookup Product info and price-per-unit comparison
Ingredient Search /ingredient-search Find products by ingredient include/exclude
Admin /admin Password-gated management panel with all tabs

Admin Panel Tabs

  1. Products — CRUD, barcode scanner, copy product
  2. Customers — CRUD, loyalty balance, loyalty history
  3. Transactions — Search, void, remove items
  4. Import — Excel/CSV wizard with preview and column mapping
  5. Duplicates — Find and merge duplicate UPC products
  6. Housekeeping — Inventory activity report with time-window filters
  7. Analytics — Sales trends and top customer leaderboard
  8. Database — Export, import, wipe
  9. Change Password — Update admin password

Development

# Install frontend dependencies
npm install

# Start development server (Tauri + Vite hot reload)
npm run tauri dev

# Production build
npm run tauri build

Requirements: Node.js, Rust toolchain, Tauri CLI v2

Window size: 1280×800 (minimum 900×600) App identifier: com.chowhound.jackie-pos

About

Bespoke POS software product for a friend

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages