SIM - Gym Edition
SIM (Sales and Inventory Management) built for a real gym, running on hardware I set up and maintain. Front desk check-in, subscriptions, retail checkout, staff attendance, and financial reporting - all in one offline-capable desktop app.

Front desk check-in: NFC tap or manual entry, with live reader status.
Problem
Most gym software is either a subscription SaaS priced for a multi-location chain, or a spreadsheet-and-notebook system that breaks down the moment a member forgets their number at the desk. Neither fits a single-location gym that wants fast check-in, accurate billing, and reporting it can actually trust - without paying per-member SaaS fees or depending on an internet connection to let someone in the door.
Solution
SIM runs as an Electron desktop app talking to a local NestJS backend and PostgreSQL database - no cloud dependency for day-to-day operation. Auto-migration on startup keeps the schema current without manual DB work, and an auto-updater (with a separate release channel for the POS terminal) keeps the gym’s install current without me physically visiting.
Hand-written SQL migrations for full control over the schema, and direct integration with an ACR122 NFC reader and USB thermal printer via ESC/POS - the kind of hardware-facing work that doesn’t show up in a typical web app, and that surfaces its own class of bugs: printer memory corruption, timezone boundaries that only break at midnight, silent installer mismatches on auto-update.
Features
- NFC check-in - members tap a card at the front desk; a WebSocket gateway pushes reader events (scan, connect, error) to the UI in real time. Manual check-in by member number is available as a fallback.
- Subscriptions & packages - session-based or date-based expiry, freeze/unfreeze with custom re-expiry dates, renewal grace-period pricing, inline discounts, partial payments, and payment-method tracking, with payment status recomputed automatically as payments come in.
- Retail & cafe POS - a separate companion Electron terminal app for front-desk retail and cafe sales, with its own inventory (stock in/out, computed stock levels) and thermal receipt printing.
- Staff attendance - personnel clock in/out via card swipe, generating attendance reports without a separate timeclock system.
- Financial dashboard - revenue actuals and forecasts, daily breakdowns, average transaction value, and member counts, all computed from the same transaction data driving check-in and billing.
- Session confirmations queue - a review step for pending sessions before they’re logged, so front-desk mistakes don’t silently corrupt billing.
Tech Stack
- NestJS backend with parameterized queries over
pg - Angular 21 admin console + a separate Angular POS terminal renderer
- Electron desktop shell (Mac/Windows/Linux), electron-builder, electron-updater
- PostgreSQL
- NFC hardware integration (
pcsclite,nfc-pcsc) and ESC/POS thermal printing - JWT auth, WebSocket gateway for real-time reader events
- GitHub Actions CI on a self-hosted runner, publishing to a private release channel
Status
Live
Category
Point of Sale · 2026
Tech Stack
Interested?
Get in Touch →