Offline-first desktop billing and inventory management for electrical retail stores. Built with Electron, React, TypeScript, TailwindCSS, and SQLite.
- Dashboard — Today's bills/revenue, low-stock alerts, recent estimates, and quick actions.
- Estimates & Billing — Create, edit, finalize, void, and duplicate estimates with automatic stock adjustments.
- Inventory — Track products, stock levels, units, suppliers, and low-stock alerts.
- Customers — Customer directory with quick search and inline creation.
- Print & PDF — A4 print-ready estimates and PDF export.
- Email — Send estimates as PDF attachments via SMTP (license-gated).
- Cloud Backup — Optional manual or automatic backup to a Neon PostgreSQL database (license-gated).
- Offline First — Works without internet; syncs when a connection is available.
- License Activation — Modular licensing with install-time module toggles.
- Node.js >= 20
- Windows 10/11 (primary target)
- npm
npm installnpm run devnpm run buildnpm testnpm run dist:winThe installer will be created at dist/SparkLedger Setup 1.1.0.exe. The installer includes a custom page for entering a license key and selecting enabled modules (Cloud Sync, Email).
On first launch, open Settings and configure:
- Company — business name, address, phone, email, GSTIN.
- Estimate Numbering — prefix, year token, starting sequence.
- Email/SMTP — host, port, user, and password for sending PDFs (requires the Email module).
- Cloud Backup — Neon connection string (requires the Cloud Sync module).
- License — View or deactivate the active license; configure a custom license server URL if needed.
Credentials are encrypted at rest using the OS safe-storage wrapper.
├── src/main # Electron main process, DB, repositories, services
├── src/preload # IPC preload bridge
├── src/renderer # React UI pages and components
├── drizzle # SQLite and PostgreSQL migrations
├── tests # Phase-based Vitest test suite
├── build # App icons and build resources
└── dist # Packaged installer output
MIT © 2026 SparkLedger