The problem
Small workshops and spare-parts stores often run on paper notebooks and memory: who owes what, which parts are running low, what was sold today. Generic accounting software is too heavy for them, and most of it does not handle Arabic properly.
What I built
Gunter is a desktop application for Windows that covered the daily work of a parts business. It tracked operations (sales, payments and debts) with a full history, kept a customer list with running balances, watched stock and warned when an item dropped below its threshold, and printed branded receipts on thermal printers. The whole interface switched between Arabic and English with right-to-left layout and localized calendars.
Decisions
- Desktop first. Built with React and Vite inside Electron and shipped as a Windows installer, because a shop counter runs a Windows PC and cannot depend on a browser tab staying open.
- Fast at the counter. Daily work ran from data kept on the machine, so the app stayed fast and kept working when the connection dropped, with Firebase behind it for licensing.
- Arabic that actually matches. Customer search normalizes Arabic letter variations, so the same name typed two ways still found the same person.
- Access levels. Users and admins saw different things; settings and deletions needed the admin password. Activation keys were tied to the machine to stop copying.
- Updates from settings. New versions were installed from inside the app.
Where it stands
Built from December 2025 to March 2026. The last release, version 1.11.1, is still on GitHub as a Windows installer, but the system is deactivated and no longer offered.
%2F1.webp?alt=media&token=bd535854-0cd4-4798-9900-63b900ada44b)
%2F2.webp?alt=media&token=936a8017-8054-4445-90ff-8d027ac0a699)
%2F3.webp?alt=media&token=c78a5a06-aef7-46dd-a1a3-d24e00fbd697)
%2F4.webp?alt=media&token=cc77b144-f257-4df5-a4aa-165c09cdd7cc)
%2F5.webp?alt=media&token=6420372f-654c-4a77-bb7a-bb2c8dbe6704)
%2F6.webp?alt=media&token=09f67861-ad51-4f54-b1dc-bf55c3a72dd7)
%2F7.webp?alt=media&token=f1827d7d-12b6-4b58-b401-34b48f120b48)
%2F8.webp?alt=media&token=ed90b9e3-a203-4f80-8727-780f8f888596)
%2F9.webp?alt=media&token=bfc4dfa0-db37-4572-9b05-d8faf6541f80)
%2F10.webp?alt=media&token=38781005-46ed-4e1f-8267-3eade47b2339)
%2F11.webp?alt=media&token=758bce39-296c-43dd-a3a2-c8a82f614339)
%2F12.webp?alt=media&token=7f5e6e0a-5bcd-4944-81d4-fdf4a5842ad0)
%2F13.webp?alt=media&token=be5cbb1f-e344-4c73-899a-a8b88acda523)