SkillAgentSearch skills...

KasirKu

Aplikasi PoS Realtime yang memudahkan pemilik usaha untuk mengelola Kasir

Install / Use

/learn @KevinAdhaikal/KasirKu

README

<p align="center"> <img src="html/dist/img/kasirku.png" width="128" height="128" alt="KasirKu Logo"> </p> <h1 align="center">KasirKu</h1> <p align="center"> <strong>Simple & Efficient Point of Sale (PoS) System</strong> </p> <p align="center"> <img src="https://img.shields.io/badge/Bun-000000?style=for-the-badge&logo=bun&logoColor=white" alt="Bun"> <img src="https://img.shields.io/badge/Docker-2496ED?style=for-the-badge&logo=docker&logoColor=white" alt="Docker"> <img src="https://img.shields.io/badge/TypeScript-3178C6?style=for-the-badge&logo=typescript&logoColor=white" alt="TypeScript"> </p> <hr>

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

  • 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.
<!-- TODO: Revisi bagian ini karena sudah menggunakan .env -->

Automatic Setup

Jika config.json tidak ditemukan saat startup, KasirKu akan:

  1. Menanyakan konfigurasi via CLI.
  2. Menampilkan preview konfigurasi.
  3. Membuat file config.json secara 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

View on GitHub
GitHub Stars54
CategoryDevelopment
Updated48m ago
Forks9

Languages

JavaScript

Security Score

85/100

Audited on Apr 7, 2026

No findings