- TypeScript 99.4%
- Dockerfile 0.6%
Third of three parts (outlet fields -> employee assignment + Wira sync -> local work-shift roster) per Pak Budi's 2026-07-12 request. - pos_work_shifts: named shift patterns (name/startTime/endTime/color). Soft-deleted (isActive=false) rather than dropped, so existing schedule rows referencing a retired pattern aren't orphaned. - pos_employee_schedules: which employee works which pattern on which day, denormalised outletId (a rotating employee can be scheduled at whichever outlet they're actually working that day, independent of their current assignment record). Unique per (employee, date) -> surfaced as 409 Conflict, not a raw DB error. This is the local/standalone roster for Point-only merchants (no Wira). Pulling schedules from Wira's own hrm_schedules for tenants that sync HR data is a natural follow-up, not built here. |
||
|---|---|---|
| drizzle | ||
| src | ||
| .env.example | ||
| .gitignore | ||
| .gitlab-ci.yml | ||
| docker-compose.yml | ||
| Dockerfile | ||
| drizzle.config.ts | ||
| LICENSE | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
| tsconfig.json | ||
| vitest.config.ts | ||
Kinexa Point — Open Source POS Backend
Point of Sale (POS) backend untuk UMKM retail Indonesia. Dibangun di atas Hono, Drizzle ORM, dan PostgreSQL. Multi-tenant, multi-outlet, siap integrasi Atlas ERP.
Free Edition — gunakan gratis untuk bisnis Anda sendiri. Lihat LICENSE untuk ketentuan.
Fitur
- Multi-outlet — satu akun, banyak gerai/kasir
- Katalog produk — kategori, variasi harga, stok per outlet
- Transaksi POS — cart, diskon, berbagai metode bayar (tunai, transfer, QRIS)
- Shift kasir — buka/tutup shift, rekap per shift
- Manajemen stok — stok masuk, keluar, opname
- Dashboard — summary penjualan harian, produk terlaris
- AI Assistant — integrasi Kinexa Liqaa (opsional, butuh subscription)
- REST API — lengkap dengan OpenAPI docs di
/api/docs
Tech Stack
| Layer | Tech |
|---|---|
| Runtime | Node.js 22 (LTS) |
| Framework | Hono |
| Database | PostgreSQL 17 + Drizzle ORM |
| Auth | JWT (RS256, shared dengan Kinexa SSO) |
| Language | TypeScript 5.x strict mode |
| Tests | Vitest |
Cara Jalankan (Development)
Prasyarat
- Node.js 22+
- PostgreSQL 17 (bisa pakai Docker)
1. Clone & Install
git clone https://git.oprex.id/kinexa/point.git
cd point
npm install
2. Setup Environment
cp .env.example .env
# Edit .env sesuai konfigurasi Anda
Variabel minimal:
DATABASE_URL=postgresql://user:password@localhost:5432/kinexa_point
JWT_SECRET=your-jwt-secret-min-32-chars
PORT=3016
3. Migrasi Database
npm run db:migrate
4. Jalankan
npm run dev # development (hot reload)
npm run build # build production
npm start # production
API tersedia di http://localhost:3016. Dokumentasi OpenAPI: http://localhost:3016/api/docs.
Deploy dengan Docker Compose
Cara tercepat self-hosting — build image dari source repo ini sendiri, tidak butuh registry eksternal:
git clone https://git.oprex.id/kinexa/point.git
cd point
cp .env.example .env
# Edit .env, minimal isi JWT_SECRET
docker compose up -d --build
API tersedia di http://localhost:3016. Ini paket backend saja — dashboard cloud multi-cabang (kinexa-point-web) adalah layanan terpisah, lihat kinexa.id/point untuk versi hosted.
Integrasi
Standalone (Tanpa Kinexa)
Point berfungsi penuh tanpa koneksi ke Kinexa. Semua fitur inti (transaksi, stok, laporan) tersedia.
Dengan Atlas ERP (Membutuhkan Subscription)
| Integrasi | Deskripsi |
|---|---|
| Atlas Finance | Setiap transaksi → jurnal akuntansi otomatis |
| Atlas Gudang | Penjualan → deduct stok terpusat |
| Atlas Niaga | POS transaction → Sales Order Niaga |
Dengan Layanan Kinexa Lain (Opsional)
- Kinexa Nidaa — struk digital via WhatsApp
- Kinexa Liqaa — AI chatbot customer service
- Kinexa Wawas — analytics cross-outlet
Lisensi
Elastic License 2.0 — sumber terbuka, gratis untuk digunakan di bisnis Anda sendiri.
Tidak diperbolehkan:
- Menjual kembali software ini sebagai produk
- Menawarkan sebagai layanan hosted/SaaS kepada pihak lain
Untuk lisensi komersial (distribusi/reseller): hubungi kinexa.id
Kontribusi
Pull Request disambut! Lihat CONTRIBUTING.md untuk panduan.
Diskusi & bug report: git.oprex.id/kinexa/point atau komunitas Oprex