PROJECT_03
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
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.