Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🌐 Light.Bill

Platform Billing, CRM & Network Automation ISP

Gratis. Open-source. Self-hosted. Siap produksi.


Next.js TypeScript Prisma License: MIT

Deploy with Vercel


📖 Tentang Light.Bill

Light.Bill adalah platform manajemen ISP all-in-one yang dirancang untuk kebutuhan nyata operator jaringan internet di Indonesia — mulai dari RT/RW Net dan komunitas, hingga ISP komersial skala menengah.

Dibangun di atas Next.js App Router, Prisma ORM, dan TypeScript, Light.Bill menggabungkan billing, manajemen jaringan MikroTik/OLT GPON, notifikasi pelanggan, dan laporan keuangan dalam satu platform terpadu yang cepat, aman, dan mudah dioperasikan.

Gratis selamanya. Tidak ada biaya berlangganan. Tidak ada vendor lock-in. Kode sumber terbuka sepenuhnya.


✨ Fitur Unggulan

💳 Billing & Invoice Engine

  • Invoice auto-generate tiap bulan via cron job
  • Kalkulasi Prorata otomatis untuk pelanggan baru di tengah bulan
  • PPN inklusif/eksklusif & Admin Fee flat/persentase per-gateway
  • Portal bayar mandiri pelanggan (/bayar/[slug])
  • Kwitansi digital & cetak PDF
  • Referral/Afiliasi dengan state machine PENDING → REWARDED → REDEEMED

⚡ Integrasi MikroTik & RADIUS

  • Sync otomatis PPPoE Secret & Hotspot User ke MikroTik
  • Isolir otomatis pelanggan tertunggak (pindah profil + putus sesi)
  • Real-time Traffic Graph (upload/download Bps, Area Chart 12 jam)
  • Dukungan multi-router (RouterOS v6 & v7)
  • RADIUS Server terpusat untuk autentikasi PPPoE/Hotspot
  • Remote syslog viewer langsung dari dashboard

🔌 OLT GPON Management

  • Zero Touch Provisioning (ZTP): deteksi ONU unconfigured & auto-provision
  • Support ZTE C320/C300, Huawei MA5608, VSOL
  • Health Polling: cek Tx/Rx, voltage, temperature, LOS alert
  • ONT Status History & analitik sinyal per pelanggan

📲 Notifikasi Multi-Channel

  • WhatsApp Gateway (Baileys Engine) — kirim & terima pesan
  • Telegram Bot — notifikasi gratis, tautan akun mandiri
  • Reminder otomatis H-3, H-1 jatuh tempo, notif isolir & lunas
  • Blast pesan ke segmen pelanggan tertentu
  • Template pesan dinamis yang dapat dikustomisasi

🤖 Pembayaran & OCR Otomatis

  • Integrasi Midtrans, Xendit, Tripay, Duitku
  • Webhook closed-loop dengan verifikasi signature
  • OCR Engine (OCR Space) untuk baca bukti transfer manual
  • Konfirmasi pembayaran instan via WhatsApp

📊 Laporan & Monitoring

  • Dashboard Keuangan: income vs expense, grafik tahunan
  • Monthly Financial Matrix dengan kalender 7 kolom
  • Export PDF & CSV untuk keperluan audit
  • Sistem Ticketing & Helpdesk (SLA, prioritas, riwayat)
  • Activity Log & Audit Trail dengan filter & export

👥 Manajemen Tim & Operasional

  • Role-based Access: Admin, Kasir, Teknisi, NOC, Reseller
  • Sistem Penggajian & Insentif Teknisi (HR & Payroll)
  • Absensi GPS untuk staf lapangan
  • Job Order & tracking tugas teknisi
  • Inventory & Aset Jaringan (ODC, ODP, kabel, perangkat)

🛠️ Tech Stack

Lapisan Teknologi Keterangan
Framework Next.js 16 (App Router) Full-stack React, SSR, API Routes
Bahasa TypeScript 5 Type-safe end-to-end
Database ORM Prisma 7 Schema migration, query builder
Database Engine SQLite / PostgreSQL SQLite untuk lokal/VPS, PostgreSQL untuk cloud
Autentikasi JWT (jose) + bcrypt Role-based session, HttpOnly Cookie
Enkripsi AES-256-GCM Kredensial MikroTik terenkripsi di DB
WhatsApp Baileys (Multi-Device) Gateway resmi tanpa API berbayar
Telegram Telegram Bot API Notifikasi real-time gratis
Payment Midtrans / Xendit / Tripay / Duitku Multi-gateway dengan webhook
Grafik Recharts Monitoring bandwidth & keuangan
Styling Vanilla CSS + TailwindCSS Dark mode, glassmorphism, animasi
Deployment Vercel / VPS + PM2 Fleksibel sesuai infrastruktur

🚀 Cara Mulai (Quick Start)

Prasyarat

  • Node.js v18 atau lebih baru
  • npm atau pnpm
  • (Opsional untuk produksi) PostgreSQL / VPS / Vercel

Instalasi Lokal

# 1. Kloning repositori
git clone https://github.com/USERNAME/LightBill.git
cd LightBill/lightbill-app

# 2. Instal dependensi
npm install

# 3. Salin template konfigurasi
cp .env.example .env
# Edit .env sesuai kebutuhan Anda (lihat Konfigurasi di bawah)

# 4. Inisialisasi database & isi data seed
npx prisma db push
npx prisma db seed

# 5. Jalankan server pengembangan
npm run dev

Buka http://localhost:3000 di browser Anda.

💡 Tip: Secara default, .env.example menggunakan SQLite lokal dan mode simulasi MikroTik (MIKROTIK_SIMULATION="true"). Anda dapat langsung login dan mengeksplorasi semua fitur tanpa memerlukan hardware router atau database eksternal.

Akun Demo Bawaan (Seed Data)

Role Username Password
Admin admin admin123
Kasir kasir kasir123
Teknisi teknisi teknisi123

⚠️ Ganti semua password dan aktifkan NEXT_PUBLIC_DEMO_MODE=false sebelum go-live!


⚙️ Konfigurasi Environment Variables

Salin .env.example ke .env dan sesuaikan nilai-nilainya:

# === DATABASE ===
DATABASE_URL="file:./dev.db"                    # SQLite (lokal/VPS)
# DATABASE_URL="postgresql://..."               # PostgreSQL (cloud)

# === AUTENTIKASI — WAJIB DIGANTI DI PRODUKSI! ===
# Generate: node -e "console.log(require('crypto').randomBytes(64).toString('hex'))"
NEXTAUTH_SECRET="ganti-dengan-string-acak-64-karakter"
NEXTAUTH_URL="http://localhost:3000"            # URL publik aplikasi Anda

# === ENKRIPSI MIKROTIK — WAJIB DIGANTI DI PRODUKSI! ===
# Generate: node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"
ENCRYPTION_KEY="ganti-dengan-string-acak-32-karakter"

# === CRON JOB SECURITY — WAJIB DIISI DI PRODUKSI! ===
CRON_SECRET="ganti-dengan-string-acak-32-karakter"

# === MODE APLIKASI ===
NEXT_PUBLIC_DEMO_MODE="true"                    # false di produksi
MIKROTIK_SIMULATION="true"                      # false untuk koneksi router nyata

🌩️ Deployment Produksi

Opsi A — Vercel (Rekomendasi Cloud)

  1. Fork repositori ini ke akun GitHub Anda.

  2. Buka vercel.com dan Import Project dari GitHub.

  3. Atur Environment Variables di Settings → Environment Variables Vercel:

    Variabel Nilai
    DATABASE_URL URL PostgreSQL produksi Anda
    NEXTAUTH_SECRET String acak 64 karakter
    ENCRYPTION_KEY String acak 32 karakter
    CRON_SECRET String acak 32 karakter
    NEXTAUTH_URL https://domain-anda.com
    NEXT_PUBLIC_DEMO_MODE false
  4. Jalankan migrasi database:

    npx prisma migrate deploy
  5. Deploy!

⚠️ Catatan Vercel Free Tier: Hanya mendukung 2 cron job. Edit vercel.json dan pertahankan hanya 2 dari 5 cron yang ada (disarankan: invoices & bandwidth). Untuk semua 5 cron aktif, gunakan Vercel Pro atau self-host.


Opsi B — Self-Host VPS (Ubuntu/Debian)

Ideal untuk terhubung langsung ke router MikroTik di jaringan lokal.

# 1. Build aplikasi
npm run build

# 2. Jalankan dengan PM2 (process manager)
npm install -g pm2
pm2 start npm --name "lightbill" -- start
pm2 save && pm2 startup

# 3. Setup Cron Job via OS crontab
crontab -e

Tambahkan baris berikut ke crontab:

# Cek bandwidth setiap 5 menit
*/5 * * * * curl -s -X POST https://your-domain.com/api/cron/bandwidth?secret=YOUR_CRON_SECRET

# Generate tagihan & auto-isolir setiap pukul 00:00 WIB (17:00 UTC)
0 17 * * * curl -s -X POST https://your-domain.com/api/cron/invoices?secret=YOUR_CRON_SECRET

# OLT health check setiap 10 menit
*/10 * * * * curl -s -X POST https://your-domain.com/api/cron/ont-health?secret=YOUR_CRON_SECRET

# Network ping & alert setiap 5 menit
*/5 * * * * curl -s -X POST https://your-domain.com/api/cron/network-ping?secret=YOUR_CRON_SECRET

# OLT ZTP setiap 1 jam
0 * * * * curl -s -X POST https://your-domain.com/api/cron/olt-ztp?secret=YOUR_CRON_SECRET

🤖 AI Agent API & MCP Integration

Light.Bill punya API lengkap (124+ routes) dan MCP Server resmi — sehingga AI agents (Hermes/ARKA, Claude, n8n, custom script) bisa mengelola seluruh platform: pelanggan, karyawan, router MikroTik, OLT, tagihan, payment gateway, inventaris, dan lainnya.

AI Agent API Key (X-AI-Key)

Set AI_API_KEY di .env, lalu panggil endpoint mana pun dengan header X-AI-Key — tanpa flow login JWT:

curl -H "X-AI-Key: your-ai-api-key" https://your-lightbill-domain.com/api/customers
curl -H "X-AI-Key: your-ai-api-key" https://your-lightbill-domain.com/api/dashboard
curl -H "X-AI-Key: your-ai-api-key" https://your-lightbill-domain.com/api/whatsapp

📄 Dokumentasi lengkap: API-AI-AGENT.md

MCP Server (134 tools)

Sumber Link
PyPI lightbill-mcp-server
GitHub lightnet19/lightbill-mcp-server
MCP Registry io.github.lightnet19/lightbill-mcp-server
pip install lightbill-mcp-server

Contoh kemampuan via MCP:

Task Tool
List / add / edit / delete customers lb_list_customers, lb_customer_create, lb_customer_update, lb_customer_delete
Manage staff lb_staff_create, lb_staff_update, lb_staff_delete
MikroTik router CRUD + monitor lb_router_create, lb_router_traffic, lb_router_resource
OLT / ONT management lb_olt_create, lb_olt_ont_reboot, lb_olt_ztp_create
Confirm cash payment (auto-reactivate) lb_invoice_mark_paid
Approve / reject transfer proof lb_payment_verification_approve, lb_payment_verification_reject
Set payment gateway (Tripay/Duitku/Midtrans) lb_payment_gateway_set
WhatsApp status / send lb_whatsapp_status, lb_whatsapp_send
Inventory borrow / install lb_inventory_borrow, lb_inventory_install

⚠️ Aksi destruktif (delete) & berdampak layanan (reboot ONT, kick radius) sebaiknya dikonfirmasi manusia.


🔒 Keamanan

Light.Bill dirancang dengan prinsip Security by Default:

Mekanisme Implementasi
Session Cookie HttpOnly: true — tidak bisa diakses JavaScript (anti-XSS)
JWT Signed dengan jose, expiry 12 jam
Password Di-hash dengan bcrypt (cost factor 10)
Kredensial Router Dienkripsi AES-256-GCM sebelum masuk database
Cron Endpoints Wajib CRON_SECRET — tolak 500 jika tidak dikonfigurasi
Rate Limiting Login, checkout, & webhook endpoint dibatasi per-IP
Startup Validation App menolak start jika ENCRYPTION_KEY / NEXTAUTH_SECRET tidak di-set di production
Log Sanitization Payload webhook sensitif tidak dicetak di log produksi

📁 Struktur Direktori

LightBill/
├── lightbill-app/          # Aplikasi Next.js utama
│   ├── prisma/             # Schema database & seed data
│   ├── src/
│   │   ├── app/            # App Router: pages & API routes
│   │   │   ├── api/        # Backend API endpoints
│   │   │   ├── dashboard/  # Halaman dashboard staff
│   │   │   ├── client/     # Portal mandiri pelanggan
│   │   │   └── bayar/      # Halaman checkout publik
│   │   └── lib/            # Utilities: auth, crypto, billing, mikrotik
│   ├── .env.example        # Template konfigurasi
│   └── vercel.json         # Konfigurasi cron Vercel
├── docs/                   # Dokumentasi proyek
│   ├── devplan.md          # Rencana pengembangan
│   ├── devlog.md           # Catatan teknis harian
│   └── ROADMAP.md          # Roadmap fitur & status
├── CONTRIBUTING.md         # Panduan berkontribusi
├── LICENSE                 # MIT License
└── README.md               # Dokumentasi ini

🗺️ Roadmap

Semua fase pengembangan utama telah selesai. Berikut status modul yang sudah tersedia:

Modul Status
Billing & Invoice Engine (Prorata, PPN, Referral)
MikroTik Integration (PPPoE, Hotspot, Isolir Otomatis)
OLT GPON (ZTE, Huawei, VSOL) + ZTP + Health Monitor
RADIUS Server Terpusat
WhatsApp & Telegram Notification Gateway
Multi-Payment Gateway (Midtrans, Xendit, Tripay, Duitku)
OCR Auto-Confirmation Bukti Transfer
Portal Mandiri Pelanggan
Laporan Keuangan & Ekspor PDF
Sistem Ticketing & Helpdesk
Inventory & Aset Jaringan
HR & Payroll Teknisi
Backup & Restore Data
Activity Log & Audit Trail
Network Topology Map
Production Hardening & Open-Source Ready

Lihat ROADMAP.md untuk detail lengkap dan rencana pengembangan berikutnya.


🤝 Kontribusi

Kami sangat menyambut kontribusi dari siapapun! Untuk memulai:

  1. Fork repositori ini.
  2. Buat branch baru: git checkout -b feat/fitur-baru
  3. Lakukan perubahan, pastikan build bersih: npm run build
  4. Pull Request ke branch main

Baca panduan lengkap di CONTRIBUTING.md.


📄 Lisensi

Light.Bill dilisensikan di bawah MIT License.

Bebas digunakan, dimodifikasi, dan didistribusikan — termasuk untuk keperluan komersial — selama menyertakan atribusi lisensi asli.


Dibuat dengan ❤️ untuk komunitas ISP Indonesia

⬆ Kembali ke Atas

About

Light.Bill adalah platform manajemen ISP all-in-one yang dirancang untuk kebutuhan nyata operator jaringan internet di Indonesia — mulai dari RT/RW Net dan komunitas, hingga ISP komersial skala menengah.

Resources

Contributing

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages