Back to projects

Autoservice Totem Manager

Self-service kiosk management running on 150+ terminals in well-known Uruguayan food chains.

Type
Desktop app (Electron) + image server
Role
Junior Integration Engineer at Emestudio
Year
2025-2026
Stack
  • Node.js
  • Express.js
  • Electron
  • MS SQL
  • Sequelize
  • pkg
  • Sharp
Group management page of the self-service kiosk management system.

A desktop app built with Electron and Node.js to manage products, groups and images on self-service kiosks. It runs on more than 150 active terminals in well-known restaurant chains across Uruguay.

Changing what a kiosk showed was a manual job. Updating a product, a price or an image meant going through support, and every new client had to be set up by hand before their kiosks were ready. That slowed down onboarding and kept the team busy with small menu changes.

I built an Electron desktop app with a Node.js and Express backend on top of the existing MS SQL database, using Sequelize for the data layer. From one place the team can manage products and groups, update prices and customize what the kiosk shows. Images are processed with Sharp and served by a separate image server that I compiled into a standalone binary with pkg.

  • Product, group and image management for self-service kiosks
  • Price updates and kiosk interface customization from the app
  • Image processing with Sharp
  • Image server compiled with pkg so it runs on its own, independent of Electron
  • Data layer designed around a production schema that couldn't be changed
  1. An image server that outlives the app

    The kiosks need their images even when the desktop app is closed. I pulled the image server out of Electron and compiled it as a standalone pkg binary, so it keeps serving no matter what happens with the app.

  2. A frozen production database

    The production schema was fixed and I had no rights to run migrations. The whole data layer had to be designed around a structure I couldn't touch, mapping what the app needed onto what already existed.

  • Deployed on 150+ active terminals in well-known restaurant chains across Uruguay
  • Around 5 hours a week saved by removing manual updates
  • Menu changes no longer require a call to support
  • Faster onboarding for new clients

Have a project or a role in mind?

Let's talk

Next project

Full stack web app

ZipLink

Full stack URL shortener with Next.js and Node.js, with per-click analytics by device, country and referrer.