Aplikasi desktop ringan untuk kasir toko kecil — input pesanan, cetak struk termal, simpan riwayat, dan sinkron otomatis antar kasir dalam satu jaringan.
Dibuat dengan Tauri 2 · Svelte 5 · Rust · SQLite — berjalan 100% offline, tanpa server, tanpa internet.
Unduh versi terbaru untuk platform Anda di halaman Releases:
| Platform | File | Keterangan |
|---|---|---|
| Windows 64-bit | *_x64-setup.exe |
Setup installer NSIS, tidak perlu hak admin |
| macOS Intel | *_x64.dmg |
macOS 10.15 (Catalina) ke atas |
| macOS Apple Silicon | *_aarch64.dmg |
M1 / M2 / M3 |
| Linux 64-bit | *.AppImage |
Portable — tidak perlu install |
Windows
Jalankan .exe → Next → Next → Finish
macOS
Buka .dmg → Drag "Print Paste Order" ke folder Applications
Linux
chmod +x Print.Paste.Order_*.AppImage
./Print.Paste.Order_*.AppImage| Fitur | Keterangan |
|---|---|
| Pesanan baru | Input nama pelanggan + isi pesanan, cetak dengan satu klik atau Ctrl+Enter |
| Riwayat pesanan | Cari, lihat preview, edit, cetak ulang, hapus — paginasi 25 per halaman |
| Preview 1:1 | Preview struk di layar cocok persis dengan hasil cetak (font & layout sama) |
| Edit pesanan | Ubah nama atau isi, simpan saja atau simpan & cetak ulang |
| Ukuran font isi | 4 ukuran fisik ESC/POS: Normal · Tinggi · Lebar · Besar |
| Pengaturan printer | Selector tipe koneksi (USB/CUPS · Serial/COM · Jaringan) — hanya tampilkan field yang relevan |
| Test print | Cetak halaman uji coba langsung dari menu pengaturan |
| Sinkron LAN | Auto-discover & sinkron pesanan antar PC dalam satu WiFi/LAN — tanpa konfigurasi |
| Retensi data | Riwayat disimpan selama 1 tahun, dihapus otomatis saat aplikasi dibuka |
| Printer | Ukuran | Koneksi |
|---|---|---|
| RPP02 | 58 mm | USB / Serial (9600 baud default) |
| EPSON TM-U220 | 75 mm | USB / Serial (19200 baud) — ada yang tanpa cutter |
| EPSON TM-T82X | 80 mm | USB / LAN (IP:9100) |
| Printer ESC/POS lainnya | 58 / 75 / 80 mm | USB (CUPS) / Serial / Jaringan |
Buka halaman Pengaturan → Printer, pilih jenis koneksi:
| Tipe | Field yang muncul | Contoh |
|---|---|---|
| USB / CUPS | Dropdown daftar printer dari OS | EPSON TM-T82X |
| Serial / COM | Dropdown port serial + pilihan baud rate | /dev/tty.usbserial-1234 · COM3 |
| Jaringan (LAN) | Input alamat IP:port | 192.168.1.100:9100 |
TM-U220 tanpa cutter — matikan toggle Auto-cut di Pengaturan.
Semua PC yang menjalankan PPO dalam satu jaringan WiFi/LAN akan saling menemukan dan menyinkronkan pesanan secara otomatis — tanpa pengaturan IP, tanpa server pusat.
- Perangkat yang terdeteksi muncul di Pengaturan → Sinkronisasi LAN
- Sinkron berjalan di latar belakang setiap 30 detik
- Tombol Sync Sekarang untuk sinkron manual
- Deduplication via UUID — pesanan yang sama tidak disalin dua kali
================================
TOKO MAKMUR JAYA
================================
DK PASAR ← nama pelanggan (tebal, 2× tinggi)
Tanggal : 24/04/26 10:32
--------------------------------
2 sak beras........................ [ ]
1 sak terigu....................... [ ]
40 kg minyak goreng kemasan
besar ekonomis..................... [ ]
5 karton teh botol sosro........... [ ]
--------------------------------
Terima kasih atas pesanan Anda!
TOKO MAKMUR JAYA
PC: Kasir 1
================================
[CUT]
- Titik-titik (dot leaders) memudahkan pencoretan manual
- Kotak
[ ]untuk centang saat barang disiapkan - Nama pelanggan dicetak dua kali lebih besar untuk mudah dibaca
| Pilihan | Lebar cetak | Printer |
|---|---|---|
| 58 mm | 32 karakter | RPP02 |
| 75 mm | 40 karakter | EPSON TM-U220 |
| 80 mm | 48 karakter | EPSON TM-T82X (default) |
| Pilihan | Keterangan |
|---|---|
| Normal | 1× tinggi, 1× lebar — standar |
| Tinggi | 2× tinggi, 1× lebar |
| Lebar | 1× tinggi, 2× lebar — kolom teks jadi separuh |
| Besar | 2× tinggi, 2× lebar — kolom teks jadi separuh |
| Field | Keterangan |
|---|---|
| Nama Toko | Muncul di header dan footer struk, teks terpusat |
| Footer | Baris pesan di atas nama toko (misal: "Terima kasih atas pesanan Anda!") |
| Nama PC / Kasir | Muncul di baris paling bawah struk dan di kolom riwayat |
| Baris Kosong Setelah Cetak | Tambah 1–5 baris jika tulisan terakhir tidak keluar dari kepala cetak |
- Bun ≥ 1.0
- Rust stable
- Tauri v2 system dependencies — lihat Prerequisites Tauri
# Clone repositori
git clone https://github.com/nikokevin29/cashier-printer.git
cd cashier-printer
# Install dependensi frontend
bun install
# Jalankan mode development
bun run tauri dev
# Build production (platform saat ini)
bun run tauri buildOutput binary ada di src-tauri/target/release/bundle/.
cd src-tauri
cargo testcashier-printer/
├── src/
│ ├── lib/
│ │ ├── api.ts # Wrapper typed untuk invoke() Tauri
│ │ ├── stores.svelte.ts # Toast & state global (Svelte 5 runes)
│ │ ├── types.ts # Order, AppSettings, PrinterInfo, PeerInfo
│ │ └── GuidedTextarea.svelte # Textarea dengan garis batas kolom
│ └── routes/
│ ├── +layout.svelte # Navigation Rail MD3 + toast overlay
│ ├── new/ # Form pesanan baru
│ ├── history/ # Riwayat + search + pagination + preview
│ ├── edit/[id]/ # Edit pesanan
│ └── settings/ # Pengaturan printer, template & LAN sync
└── src-tauri/src/
├── db/
│ ├── mod.rs # Inisialisasi SQLite + schema + migrasi
│ ├── orders.rs # CRUD pesanan + sync order
│ └── settings.rs # Key-value settings + device ID
├── print/
│ ├── builder.rs # VecDriver + layout struk ESC/POS
│ └── driver.rs # Dispatch: CUPS → Serial → Jaringan
├── sync/
│ ├── mod.rs # Orkestrasi LAN sync
│ ├── discover.rs # UDP broadcast peer discovery
│ ├── server.rs # HTTP server (GET /sync, POST /push)
│ └── client.rs # HTTP client sinkron dari peer
├── commands/ # Tauri commands (order, print, settings, sync)
├── error.rs # AppError dengan serde + thiserror
└── lib.rs # Tauri builder + state init
Setiap tag v* yang di-push ke main akan otomatis men-trigger GitHub Actions untuk:
- Build untuk 4 platform (macOS Intel, macOS ARM, Windows x64, Linux x64)
- Membuat GitHub Release dengan file siap unduh
Lihat .github/workflows/release.yml.
Copyright © 2026 CV Rejeki Amerta Jaya. All rights reserved.