← Back

StudioPOS

Visit Kruze Studio →
Highlight
Live in production
paying clients
Stack
TauriRustReact 19SQLite
Role
Developer

I built StudioPOS during my second year of college. It started as a custom app for a local tailoring shop (Preet Designer Boutique) because the owner was struggling to keep track of orders, customer measurements, and staff payments. Later, I refactored the code to turn it into a clean, white-label desktop app that other boutiques can use.

Tailoring shops have a unique workflow. They don't need a heavy cloud system, and they certainly don't want their business to stop if the internet goes down. That's why I made it offline-first. By using Tauri with Rust and SQLite, everything runs locally on their computer. The owner has total control over their data, and there's no lag.

Setting Up and Security

The app has a strict setup process when it's opened for the first time. It checks the database tables and runs a setup wizard if needed. The owner has to set a custom 4-digit PIN, which is encrypted locally using SHA-256.

After that, the owner sets up the boutique name, logo, social links, and UPI payment details. This branding is used across the entire app and on printed invoices.

How the Shop Floor Works

  • ›Staff and Owner Modes: Staff can log in without a PIN to view active orders, search customer files, and update order statuses. However, sensitive areas like sales reports, payroll logs, and cash accounts require the owner's 4-digit PIN.
  • ›Dynamic Measurements: Different clothes need different measurements. A kurti needs a chest and shoulder size, while pants need length and waist. Instead of a messy form with dozens of empty inputs, the app loads fields dynamically from a JSON template based on the garment type. If a returning customer places an order, the system scans their past receipts and automatically fills in their last recorded measurements to save time.
  • ›Avoiding Unpaid Deliveries: A common issue in boutiques is staff handing over finished clothes before the customer pays the remaining balance. To fix this, if an order has an outstanding balance, the app blocks the staff from marking it as "Delivered" until the payment is cleared and recorded.
  • ›Easy Notifications: The app automatically generates custom WhatsApp messages with the customer's name, order ID, and balance details. Staff can open WhatsApp from the app and send the message with one click.

Custom PDF Engine

The most challenging part of the project was the print layout. Tailors need to see measurements on paper at their workbenches, while customers need a clean invoice. I wrote a twin-print engine using jsPDF that generates a single document with two distinct sections:

  • ›Customer Invoice: Page one has the boutique's branding, items ordered, payment breakdown, and a UPI QR code linked to the exact pending balance.
  • ›Tailor Working Slips: The subsequent pages are split so that every garment gets its own page. It prints the measurements in huge, bold text that the tailors can easily read from a distance while working at their tables. It also includes any special requests or notes from the client.

Local Payroll

To help manage the staff, the app tracks how much tailors earn. It supports both flat-rate and percentage-based commissions. When an order is marked finished, the app automatically calculates the tailor's cut and logs it. It also tracks cash advances and daily attendance locally in SQLite, preventing double entries.

← Back to PortfolioScroll to Top ↑