KasirKu
Aplikasi PoS Realtime yang memudahkan pemilik usaha untuk mengelola Kasir
Install / Use
/learn @KevinAdhaikal/KasirKuREADME
KasirKu adalah aplikasi Point of Sale (PoS) yang dibuat untuk membantu pemilik usaha mengelola transaksi kasir dengan lebih mudah.
Jika ingin mencoba aplikasinya, kamu bisa mengakses demo berikut: https://kasirku.duckdns.org
Gunakan akun berikut untuk login:<br>
Username: admin
Password: admin
Table of contents
- Fitur
- Requrements
- Cara Menjalankan
- Configuration
- Akses
- QnA
- Q: Kenapa Anda membuat aplikasi ini?
- Q: Target pengguna KasirKu itu siapa aja?
- Q: Kenapa KasirKu dibuat open-source?
- Q: Kenapa orang harus menggunakan KasirKu dibanding aplikasi kasir lain?
- Q: Dulu namanya
aplikasikasir. Kenapa diganti menjadiKasirKu? - Q: Dulu project ini menggunakan bahasa C. Kenapa sekarang diganti ke Bun.JS?
- Q: Berarti versi C Programming-nya hilang dong?
- Q: Kenapa waktu itu anda menggunakan bahasa C?
- Q: Kapan anda melanjutkan project ini dan mengapa anda melanjutkan project ini?
- Q: Kalo misalnya Anda menggunakan Bun.JS, berarti dependencies / resource nya akan berat dong?
- Q: Pelajaran apa yang bisa diambil dari project ini?
- Credit
Fitur
- Point of Sale System
Mendukung proses transaksi penjualan barang secara cepat dan sederhana. - Manajemen Barang
Menambahkan, mengedit, dan menghapus data barang yang dijual. - Dashboard
Dashboard interaktif yang menampilkan statistik toko secara realtime, termasuk:- Informasi Total Hari Ini (Total Barang Terjual, Penjualan, Keuntungan, Pengeluaran, Pendapatan)
- Informasi Barang Kosong
- Barang Total Terjual
- Pembukuan
Mencatat transaksi keuangan toko termasuk pemasukan, pengeluaran, serta perhitungan keuntungan dari hasil penjualan (Laporan). - User Management
Mengelola akun pengguna dalam sistem, termasuk:- Mengubah profil pengguna seperti foto profil, username, dan password
- Menambahkan, mengedit, dan menghapus pengguna
- Mengatur role dan permission untuk membatasi akses ke fitur tertentu
- Realtime Update (Server-Sent Event)
Perubahan data dapat langsung tersinkron secara realtime tanpa reload halaman. - Single Page Application (SPA)
Navigasi halaman cepat tanpa reload penuh. - Responsive UI
Antarmuka berbasis AdminLTE yang nyaman digunakan di berbagai ukuran layar. - Dark Mode
Mendukung tampilan terang dan gelap. - Session Authentication
Sistem login dengan session untuk keamanan akses. - Assets Optimization & Compression
File HTML dan JavaScript di-minify serta dikompresi menggunakan Brotli untuk mengurangi ukuran file, menghemat bandwidth, dan meningkatkan kecepatan loading halaman. - Minimal Dependency
Backend ringan menggunakan Bun dan TypeScript dengan dependensi minimal. - Dukungan Multi Database
Mendukung SQLite, MySQL, dan PostgreSQL. - Docker Support
Dapat dijalankan dengan mudah menggunakan container Docker.
Requirements
Server
- CPU: 1 vCPU (64 bit)
- RAM: 256 MB (512 MB recommended)
- Storage: 1 GB (5 GB recommended)
- OS: Linux / Windows / macOS / Android (Termux)
Browser
KasirKu dapat dijalankan di browser modern seperti:
- Chrome
- Firefox
- Edge
- Safari
Cara Menjalankan
Pakai Bun
Pastikan Bun sudah terinstall.
bun install
bun run index.ts
<!-- TODO: Revisi kalimatnya -->
Pakai Docker
Demi "environment ready". Sudah di siapkan file docker-compose yang sudah termasuk database postgre.
Pastikan file .env ada karena docker akan membaca file configurasi dari file .env tersebut
docker compose up -d
Untuk menghentikan
docker compose down
Configuration
KasirKu menggunakan file .env yang berada di root project. Silahkan copy dari file .env.example lalu sesuaikan valuenya sesuai kebutuhan
cp .env.example .env
Configuration Options
General Settings
| Key | Type | Default | Description |
| :--- | :--- | :--- | :--- |
| listen_port | Number | 443 | Port server HTTPS. (Alt: 8443) |
| compile_html | Boolean | false | Compile HTML saat startup jika true. |
| db_type | String | sqlite | Jenis database: sqlite, mysql, atau postgresql. |
| db_name | String | kasirku | Nama database (disarankan lowercase). |
Database Specifics
PostgreSQL Configuration
Digunakan jika db_type: "postgresql"
- Host:
postgresql.host(Contoh:127.0.0.1) - Port:
postgresql.port(Default:5432) - User:
postgresql.user - Password:
postgresql.password
MySQL Configuration
Digunakan jika db_type: "mysql"
- Host:
mysql.host(Contoh:127.0.0.1) - Port:
mysql.port(Default:3306) - User:
mysql.user - Password:
mysql.password
Notes
- Jika menggunakan SQLite, konfigurasi MySQL dan PostgreSQL akan diabaikan.
- Sistem hanya akan membaca konfigurasi yang sesuai dengan nilai
db_type.
Automatic Setup
Jika config.json tidak ditemukan saat startup, KasirKu akan:
- Menanyakan konfigurasi via CLI.
- Menampilkan preview konfigurasi.
- Membuat file
config.jsonsecara otomatis.
Akses
Buka https://localhost di browser, dan untuk default Username / Password: admin / admin.
QnA
Q: Kenapa Anda membuat aplikasi ini?
A: Orang tua saya mempunyai toko, dan dari situ saya kepikiran untuk membuat aplikasi kasir sendiri.
Akhirnya pada saat saya masih SMK kelas 2, saya mulai bikin aplikasi ini.
Q: Target pengguna KasirKu itu siapa aja?
A: Target pengguna KasirKu adalah:
- Toko kecil / warung
- UMKM (Usaha Mikro, Kecil, dan Menengah)
Aplikasi ini dibuat supaya bisa membantu pemilik usaha kecil dalam mencatat dan mengelola penjualan dengan cara yang lebih mudah dan simpel.
Q: Kenapa KasirKu dibuat open-source?
A: Saya membuat project ini open-source karena beberapa alasan:
- Supaya aplikasi ini bisa terus berkembang
- Supaya orang lain bisa belajar dari project ini
- Supaya orang lain juga bisa berkontribusi dan membantu mengembangkan project ini
- Supaya project ini bisa berguna bagi lebih banyak orang
Q: Kenapa orang harus menggunakan KasirKu dibanding aplikasi kasir lain?
A: Karena aplikasi KasirKu dibuat dengan fokus pada kesederhanaan, performa, dan kemudahan penggunaan.
Beberapa keunggulannya:
- Ringan dan tidak membutuhkan resource besar
- Open-source, jadi siapa saja bisa melihat dan mempelajari source code-nya
- Bisa berjalan di hardware low-end (misalnya perangkat lama)
- Realtime data, jadi tidak perlu refresh halaman (menggunakan SSE)
- Menggunakan SPA (Single Page Application), sehingga perpindahan halaman terasa lebih cepat tanpa reload
Q: Dulu namanya aplikasikasir. Kenapa diganti menjadi KasirKu?
A: Menurut saya... nama itu terasa seperti hanya deskripsi aplikasi saja, bukan sebuah brand.
Karena itu saya mengganti namanya menjadi KasirKu, supaya:
- Lebih mudah diingat
- Terasa seperti sebuah brand
- Lebih enak disebut
Q: Dulu project ini menggunakan bahasa C. Kenapa sekarang diganti ke Bun.JS?
A: Karena... jujur saja lumayan susah wkwkwk 😂
Tapi bukan cuma itu aja alasannya.
Beberapa alasan kenapa saya pindah dari C ke Bun.JS:
- Code C cukup sulit dibaca dan dikembangkan
- Orang lain jadi lebih sulit berkontribusi ke project
- Development bisa jadi jauh lebih lama
Kalau project ini tetap menggunakan C sampai sekarang, kemungkinan besar perkembangannya akan jauh lebih lambat.
Akhirnya saya memutuskan untuk menggunakan Bun.JS.
Kenapa Bun.JS?
Karena:
- Mirip seperti Node.JS
- Lebih mudah untuk dikembangkan
- Performa sangat cepat
- Development experience lebih enak
Q: Berarti versi C Programming-nya hilang dong?
A: Tidak hilang.
Versi C Programming masih ada, tetapi sudah dipindahkan ke branch legacy.
Q: Kenapa waktu itu anda menggunakan bahasa C?
A: Saya menggunakan bahasa C pada waktu itu karena saya ingin mencoba belajar bahasa C dengan cara membuat aplikasi ini.
Dan ternyata... *susah juga
