HomeAboutProductsServicesProjectsCase StudiesBlog
Native Windows · C# · .NET 6

Barbershop POS —
The Shop Doesn't Stop
When the Internet Does.

A native Windows desktop POS built in C# / WinForms / .NET 6, running fully offline on SQLite with integrated thermal printer and cash drawer support, UAE VAT compliance, and touch-optimized kiosk mode — installed in 80+ UAE barbershops.

80+ Deployments2025–2026DeliveredC# + WinForms
barbershoppos.skylineat.ae
BarbershopPOS.exe · v2.4.1 · x64
0
UAE deployments
0
Transactions / month
0
Receipt time
0
Offline capable
The case

The shop owns the POS. Not the cloud.

The problem

  • Cloud POS fails when internet fails
  • Per-seat pricing doesn't fit a small-shop margin
  • Generic software ignores UAE FTA/TRN requirements
  • Paper books can't do reports, inventory, or VAT
  • Generic POS doesn't understand barber + chair workflow

The solution

  • 100% offline architecture — SQLite, local-first
  • One-time license — no SaaS treadmill
  • UAE VAT + TRN built into receipts and reports
  • Thermal printer + cash drawer integrated
  • Role-based security (Admin / Manager / Cashier)
  • Touch-optimized kiosk mode with barber + chair flow
Architecture

Why Native Wins Here.

This isn't a web app pretending to be desktop. It's .NET, WinForms, EF Core, SQLite. Boots in 2 seconds. Runs forever offline.

01 / STORAGE

Local SQLite

100% offline, zero network dependency. <5ms query times. Backups every 6 hours.

02 / HARDWARE

Hardware Direct

ESC/POS over COM/USB. Cash drawer RJ-11/12. USB HID barcode scanners. No cloud middleman.

03 / PLATFORM

Windows Native

WinForms + .NET 6. Runs on any Win10/11 x64 machine. Single .msi installer.

// ESC/POS receipt + cash-drawer kick — ~60 lines total
using RawPrinterHelper;
var printer = new EscPosPrinter("EPSON TM-T88VI");
printer.WriteHeader(shop.Name, shop.TRN);
foreach (var line in sale.Lines) printer.WriteLine(line);
printer.WriteVAT(sale.SubTotal, sale.VAT, sale.Total); // 5% UAE VAT
printer.Cut();
if (sale.PaymentMethod == Cash) printer.KickDrawer();
Capability

Six pillars.

01 /

Touch POS (Kiosk)

Full-screen, Alt+Tab disabled, giant service tiles. Barber + chair + 4 payment methods.

02 /
📅

Appointments

Calendar by barber + chair + time. Overlap detection. Walk-in queue.

03 /

Management

Services · Barbers · Chairs · Clients · Users. Role-based (Admin/Manager/Cashier).

04 /
📊

Reports

10 built-in: Daily · By-Barber · Service · Payment · Monthly · 3 VAT reports.

05 /
🇦🇪

UAE VAT Compliance

TRN on every receipt. 5% VAT. FTA-accepted Excel monthly return export.

06 /
🖨

Hardware Integration

EPSON TM-T88VI, any ESC/POS printer, cash drawer auto-kick, USB scanners.

Stack
C# 11.NET 6WinFormsEF Core 7SQLiteESC/POSPDFsharpClosedXMLBCryptMDIx64Windows 10/11
Results

Because the shop doesn't stop when the internet does.

80+

UAE deployments running in production.

12,000

Transactions / month average per shop.

0

Downtime from internet outages.

Native desktop

Need a native desktop app?

Windows, .NET, WinForms, WPF — we ship them. Let's talk.

Live Product Tour

Click through the actual app

Each tab is the real, fully-styled HTML for that screen — embedded in its own browsing context so the styles never collide with the case study.

barbershoppos.skylineat.ae/
More Projects

Related Work

Have a Similar Project?

Let us help you bring your vision to life with a tailored technology solution.

Get Started