← Work|LivePoint of Sale · 2026

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.

SIM check-in screen with NFC scanner active

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

NestJSAngularElectronPostgreSQLNFC

Used By

AC Fitness

Interested?

Get in Touch →