PROJECT_03

Ya lávame

Ya lávame — Punto de venta

Touch point of sale in kiosk mode for a car wash, running in production: service charging, thermal-printer tickets, cash-drawer opening, end-of-day count, debtor tracking and management of prices and workers.

TYPE
Desktop · Point of sale
STATUS
IN PRODUCTION
SCREENSHOTS
3
  • Python 3.12
  • PySide6 (Qt 6)
  • SQLite
  • python-escpos
  • pywin32
  • PyInstaller
  • Inno Setup

YaLavame_Setup_1.3.0.exe Windows · no Python required

CONTEXT

A real system in production, built for a specific car wash: it replaces charging by notebook with a complete digital flow, from the moment the customer arrives to the printed ticket and the drawer opening. Designed so that any employee, with no technical background, can use it with a finger on a touch screen, without keyboard or mouse.

DAY-TO-DAY OPERATION

  • Charging by vehicle type (sedan, SUV, pickup, motorcycle) with an editable price catalogue and extra services: wax, teflon, restorer.
  • Each service records which worker handled it, with staff managed from the app itself.
  • Debtor tracking: debts, repayments and payment history per customer.
  • End-of-day count with total takings, cars washed and a breakdown of every service for the cash count.
  • First-run setup: it asks for the business name and the administrator password the owner chooses.

TOUCH INTERFACE

  • Kiosk mode: starts full screen, with its own numeric and alphanumeric on-screen keyboards and large selection cards.
  • Automatic interface scaling based on resolution, with manual adjustment for 13" or large monitors.
  • Consistent light theme: it looks the same even if Windows is in dark mode, with no invisible text.
  • Vector SVG iconography, sharp at any resolution, and a centralized Qt style sheet (QSS).
  • Printer and drawer status indicator on the charging screen: green when it responds, red when there is no printer, so the cashier knows why nothing printed.

PRINTING AND HARDWARE

  • Tickets built with low-level ESC/POS commands: raw bytes for bold, double height and width, centering and paper cut, plus the logo rasterized as an image.
  • Cash-drawer opening in hardware through the drawer kick sequence (ESC p).
  • Printer configurable from the app: Windows spooler, serial port (COM), network (IP), direct USB or a diagnostic file, with 58 or 80 mm paper.
  • Test-print and test-connection buttons before leaving the terminal at the counter.

ARCHITECTURE AND DISTRIBUTION

  • Local SQLite database: no server, no internet and no configuration; the code is split by responsibility (data, UI components, screens, printing service, scaling).
  • Robust paths in development and production: resolved against the project root, or next to the .exe when running packaged (sys.frozen), so it works from any folder.
  • Transparent migration of previous history from JSON to SQLite on first launch.
  • Packaged as a standalone .exe with PyInstaller and a Windows installer with Inno Setup, which creates shortcuts and optional autostart for kiosk mode.
  • The installer stores the database in C:\ProgramData\YaLavame\data, a writable location outside Program Files.
  • The core is cross-platform: the Qt interface and SQLite run the same on Windows and Linux; only the printing backend changes.

SCREENSHOTS

Charging screen: worker, vehicle type and extra services selection, with the payment summary and printer status
Charging a service
End-of-day screen with total takings, cars washed and service breakdown
End-of-day count
Admin screen with per-vehicle prices, workers, security and settings
Administration

01 01