A Point-of-Sale and Inventory Management desktop app built with .NET MAUI 9. Dark-themed, cross-platform, and runs on Windows, macOS, Android, and iOS from a single codebase.
This started as a personal project to learn MAUI properly — MVVM patterns, SQLite integration, dependency injection, and building something that actually looks good rather than just works.
Dashboard — overview of your inventory at a glance. Stock levels, today's revenue, low stock alerts, and total stock value. Search and filter products by category directly from here.
Point of Sale — tap products to add them to the cart. Supports customer selection with automatic loyalty discounts, VAT calculation (19%), and three payment methods: card, cash, or mobile pay. Completing a sale deducts stock and saves the transaction to the database.
Inventory — full product management. Add, edit, or delete products. Each product shows a color-coded stock status (in stock / low stock / out of stock) and a progress bar based on current vs. max stock.
Reports — today's revenue, total transactions, and a scrollable list of recent sales.
Settings — store name, currency, VAT rate, and feature toggles for loyalty points, low stock alerts, and receipt printing.
- .NET MAUI 9 — cross-platform UI
- CommunityToolkit.Mvvm —
[ObservableProperty]and[RelayCommand]source generators, no boilerplate - SQLite-net-pcl — local database with async API
- CommunityToolkit.Maui — additional controls
- C# 12
StockPulsePOS/
├── Models/
│ ├── Product.cs
│ └── Transaction.cs
├── Services/
│ ├── DatabaseService.cs
│ ├── CartService.cs
│ └── ExportService.cs
├── ViewModels/
│ ├── DashboardViewModel.cs
│ ├── PosViewModel.cs
│ ├── CartViewModel.cs
│ ├── InventoryViewModel.cs
│ ├── ReportsViewModel.cs
│ ├── ProductFormViewModel.cs
│ ├── CustomerPickerViewModel.cs
│ └── SettingsViewModel.cs
├── Views/
│ ├── DashboardPage.xaml
│ ├── PosPage.xaml
│ ├── InventoryPage.xaml
│ ├── ReportsPage.xaml
│ ├── SettingsPage.xaml
│ ├── ProductFormPage.xaml
│ └── CustomerPickerPage.xaml
├── Converters/
│ └── Converters.cs
└── Resources/
└── Styles/
├── Colors.xaml
└── Styles.xaml
Architecture is straight MVVM with a service layer. CartService is a singleton shared between the POS and cart ViewModels — it fires a CartChanged event so the UI stays in sync without polling. DatabaseService handles all SQLite operations and seeds 10 products + 3 customers on first launch.
Requirements:
- Visual Studio 2022 (17.8+) with the .NET MAUI workload installed
- .NET 9 SDK
git clone https://github.com/YOUR_USERNAME/StockPulsePOS.git
cd StockPulsePOS
dotnet workload install maui
dotnet restoreOpen StockPulsePOS.sln in Visual Studio, set the target to Windows Machine, and hit F5. The database is created and seeded automatically on first run.
Data is stored locally in a SQLite file — nothing leaves the device. The "Clear All Data" button in Settings wipes everything permanently, so don't press it unless you mean it.
The app is optimized for desktop/tablet. It works on mobile but was designed with a wider screen in mind.
MIT