Skip to main content

Personal Project

Offline General POS System

Offline-first Windows point-of-sale system with inventory, sales, credit management, and reporting.

  • C#
  • .NET
  • WPF
  • SQL (local database)
  • MVVM

Overview

A desktop point-of-sale system designed for small retail shops where internet connectivity cannot be assumed. Everything — products, inventory, sales, customers, and credit ledgers — lives in a local database, so the shop keeps running even when the network doesn't.

The problem

Many small retailers operate in environments with unreliable connectivity, yet most modern POS products are cloud-first and stop working offline. These shops also rely heavily on informal credit (udhar), which paper ledgers track poorly.

The solution

A Windows desktop application built with C# and WPF over a local database. The architecture is offline-first by design: all operations complete locally with immediate persistence. A dedicated credit module models customer ledgers with running balances, turning informal udhar records into queryable, reportable data.

System architecture

WPF UI (MVVM)

Keyboard-first sales and management screens

View Models

State, validation, and command bindings

Domain Services

Sales, inventory, and ledger rules

Repository Layer

Local data access abstraction

Local Database

On-disk relational store, transactional writes

Architecture

Layered desktop architecture: WPF views bound to view models (MVVM), a service layer owning business rules, and a local relational database accessed through a repository layer — no network dependency in any critical path.

Key features

  • Product catalog and category management
  • Inventory tracking with stock adjustments
  • Fast keyboard-friendly sales screen
  • Customer records and purchase history
  • Cash drawer session management
  • Credit / udhar ledger with running balances
  • Daily, weekly, and monthly sales reports
  • Fully offline-first local architecture

My contribution

  • Designed the offline-first architecture and local data model
  • Built the sales, inventory, and credit ledger modules
  • Implemented cash drawer sessions and reporting
  • Designed the keyboard-driven UI for fast counter use

Technical challenges

Correctness without a server

With no backend to double-check anything, the local database is the only line of defense. Transactional writes around every sale and ledger entry ensure a crash mid-operation never leaves stock or balances inconsistent.

Modeling informal credit

Udhar is fluid — partial payments, mixed cash-and-credit sales, corrections. An append-only ledger of signed entries with computed running balances handles every case without ever editing history.

Outcome

A working demonstration that solid engineering applies beyond the web: transactional integrity, layered architecture, and thoughtful UX in a fully offline desktop environment.