Aplikasi Point of Sale (POS) offline-first untuk ritel Indonesia.
Dibangun dengan Electron, React, dan SQLite. Berjalan sepenuhnya di perangkat lokal tanpa perlu koneksi internet — cocok untuk toko ritel, kafe, dan usaha kecil-menengah di Indonesia.
- POS (Point of Sale) — antarmuka kasir cepat dengan pencarian produk, kategori, dan manajemen keranjang
- Manajemen Produk — tambah, edit, hapus produk dengan harga beli/jual, stok, SKU, dan kategori
- Manajemen Kategori — kelompokkan produk untuk checkout lebih cepat
- Riwayat Penjualan — lihat, filter, dan ekspor laporan penjualan ke CSV
- Manajemen Pengguna — kelola akun admin dan kasir dengan peran berbeda
- Laporan — ringkasan penjualan, produk terlaris, dan laba rugi
- Cetak Struk — dukungan printer thermal Epson-compatible via USB
- Backup & Restore — cadangkan dan pulihkan database dengan verifikasi checksum
- Pengaturan Toko — nama toko, alamat, mata uang, zona waktu, bahasa
- Tahan Pesanan — parkir keranjang untuk dilanjutkan nanti
- Offline-first — semua data tersimpan lokal, tidak perlu koneksi internet
| Bagian | Teknologi |
|---|---|
| Frontend | React 19, TypeScript, Tailwind CSS, Lucide Icons |
| Backend | Electron 43, Node.js SQLite (node:sqlite) |
| Database | SQLite (WAL mode, transactional) |
| Testing | Vitest |
| Packaging | Electron Builder |
| Printer | ESC/POS thermal printer via escpos-usb |
- Node.js >= 22.12.0
- npm >= 10.x
- OS: macOS, Windows, atau Linux
# Clone repositori
git clone https://github.com/your-org/pos-empati.git
cd pos-empati
# Install dependencies
npm install
# Jalankan mode pengembangan
npm run devMode pengembangan akan menjalankan:
- Vite dev server (renderer React)
- TypeScript watch compiler (main process Electron)
- Electron (jendela aplikasi)
# Build untuk arsitektur saat ini
npm run build && npm run package
# Build untuk arsitektur spesifik
npm run package -- --arm64 # Apple Silicon
npm run package -- --x64 # Intel
# Build tanpa installer (folder saja)
npm run package:dirHasil build akan tersedia di folder release/.
pos-empati/
├── electron/ # Main process Electron
│ ├── db/ # Database SQLite
│ │ ├── migrations/ # Migrasi database
│ │ └── queries/ # Query modules
│ ├── ipc.ts # IPC handlers
│ ├── main.ts # Entry point Electron
│ ├── preload.ts # Preload bridge
│ ├── auth.ts # Session management
│ ├── printer.ts # Thermal printer
│ └── updater.ts # Auto-updater
├── src/ # Renderer React
│ ├── components/ # Komponen UI
│ │ ├── modals/ # Modal dialogs
│ │ └── ui/ # UI primitives
│ ├── lib/ # Utility & context
│ ├── pages/ # Halaman aplikasi
│ │ └── settings/ # Halaman pengaturan
│ └── types/ # Type declarations
├── tests/ # Automated tests
│ └── db/ # Database tests
├── public/images/ # Assets
└── electron-builder.yml # Konfigurasi packaging
# Jalankan semua tes
npm test
# Watch mode
npm run test:watch
# Dengan coverage
npm run test:coverage| Script | Fungsi |
|---|---|
npm run dev |
Jalankan mode pengembangan |
npm run build |
Build untuk produksi |
npm run test |
Jalankan tes |
npm run lint |
Cek kode dengan ESLint |
npm run typecheck |
Cek tipe TypeScript |
npm run package |
Build + package installer |
npm run format |
Format kode dengan Prettier |
ISC License
- Email: muh.amirul.ihsan@gmail.com
- Website: www.amirul.id