FSSS Limat POS
A local-first register, inventory, and retail operations system for a real church store
- My Role
- Product design, full stack development, and database design
- Platform
- Locally hosted web/PWA and Electron desktop point-of-sale application
Private local application; no public link.
Quick Overview
React and Express point-of-sale system with hardware and mobile barcode scanning, held carts, inventory history, customers, receipts, reporting, label printing, auditing, exports, and role-based operations.
- Who it serves
- Fenote Selam Sunday School store cashiers, managers, and administrators handling sales, products, customers, reporting, and settings
- Current status
- Built
Built for a local church-store environment. The source repository is private and there is no public live deployment. The application depends on its configured local MySQL database and should not be represented as an offline-sync cloud POS.
The Problem
The store needed one system for the daily register and the work around it: finding products quickly, scanning labels, tracking stock, serving walk-in and repeat customers, printing receipts, and giving managers visibility without exposing every control to every cashier.
The replacement also had to work with an existing MySQL installation whose table and column names differed across earlier versions, rather than forcing the organization to discard its records or immediately rebuild its local environment.
The Solution
FSSS Limat POS combines a responsive React cashier workspace with a session-protected Express API and MySQL database. Staff can search or scan products, build and hold carts, attach customers, apply discounts, take several payment types, and generate thermal-friendly receipts.
Managers receive inventory and category tools, movement history, sales reports, product labels, void-and-restock controls, CSV exports, settings, backup records, and audit visibility. Compatibility logic maps common legacy user, customer, sales, and receipt columns so the React conversion can operate against the real local database.
My Contribution
Product planning
Defined the POS and inventory workflow based on real store operations.
Frontend development
Built the responsive React/Vite register, dashboard, inventory, customer, sales, reports, users, labels, and settings workspaces.
Backend integration
Built the Express API for sessions, role checks, catalog operations, checkout, reporting, receipts, exports, audit records, and settings.
Database compatibility
Mapped legacy MySQL column variants and added safe inventory migration tooling so the React system can use the organization's existing records.
Register UX
Designed keyboard-first product search, hardware barcode input, secure mobile camera scanning, held carts, customer creation, and responsive cart behavior.
Local delivery
Added production web serving, installable PWA behavior, and an Electron desktop runtime for the local store environment.
Key Features
Point of sale
Core register flow: search or scan a product, build a cart, and take payment.
Hardware and mobile barcode scanning
Supports keyboard-style barcode readers and secure-context camera scanning on mobile devices.
Inventory management
Tracks stock levels as sales happen.
Inventory movement history
Records changes to stock over time for accountability.
Customers
Creates and searches customer records without losing the current cart.
Receipts and reports
Provides 80mm print-ready receipts, optional SMTP delivery, sales KPIs, filters, history, and receipt review.
Barcode and price labels
Generates the requested quantity of 2-by-1-inch product labels with permanent SKU identity.
Role based access
Different permissions for staff versus management.
Held carts
Pauses and restores up to 20 local carts without completing a sale.
Voids and stock restoration
Manager-authorized sale voids require a reason and return sold quantities to inventory.
Audit, backup, and exports
Records operational actions, tracks backup activity, and exports products, customers, and sales as CSV.
Configurable store behavior
Controls payment defaults, discounts, receipt layout, email, low-stock thresholds, label output, theme, and mobile behavior.
Technology
Frontend
Backend
Register tooling
Desktop
Architecture
Register and management UI
React + Vite
Responsive cashier and manager workspaces run in the browser or installable PWA shell.
Application API
Node.js + Express
Session-protected routes own authentication, authorization, sales, inventory, reporting, receipts, and settings.
Operational data
MySQL
Products, categories, customers, users, sales, line items, inventory movements, settings, and audit records stay in the local database.
Register peripherals
Scanner + printer workflows
Barcode readers, mobile camera scanning, label generation, and thermal receipt layouts support the physical counter.
Desktop delivery
Electron
A desktop wrapper starts the local runtime and presents the POS as an application on the store computer.
The React client never connects directly to MySQL. It calls the local Express API, which manages server-side sessions, role checks, schema compatibility, validation, and database operations. The same application can run as a local web/PWA experience or inside the Electron desktop wrapper.
Product Gallery
These are AI-generated concept images illustrating the implemented POS workflows, not screenshots captured from the private local application.
Engineering Challenges
Converting a working legacy database safely
The earlier PHP/MySQL versions used different database names and column conventions. The API detects common user and sales schemas, preserves permanent SKU identity, and includes a migration path that updates matching SKUs instead of duplicating them.
Reconciling inventory accurately
Checkout, manual stock edits, opening inventory, and voided sales can all change stock. Movement records and automatic restoration on voids keep those changes explainable.
Designing for a physical register
The workflow has to stay fast with a keyboard scanner, work responsively on touch devices, print specialized labels and receipts, and avoid losing a cart when staff pause to help someone else.
Results and Evidence
- Converted the original modular PHP/MySQL workflow into a React/Vite frontend with an Express API while retaining compatibility with the real store database.
- Implemented complete dashboard, POS, inventory, customer, sales, reports, labels, users, and settings workspaces.
- Delivered role-protected local web/PWA and Electron desktop paths for the store environment.
What I Learned
Building for a real register taught me that hardware, printing, existing data, staff permissions, and interruptions shape the application as much as the checkout screen does.
Compatibility work is product work: adapting safely to the organization's real database made the React conversion more useful than a clean rewrite that ignored existing records.
Related Credentials
Project Management Fundamentals
IBM SkillsBuild
Issued Apr 25, 2026
See every credential on the Credentials and Learning page.