Lalabase
Tickets, Doku, Zeiterfassung und Kundengespräche an einem Ort, durchsuchbar per KI. Für Softwarefirmen mit Kundenprojekten. Open Source: auf deinem eigenen Server oder in unserer Cloud in Deutschland.
翻譯準備中
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證正在載入完整 README。 以下為已儲存的摘錄。
Manajemen sparepart SSES T2 — catat setiap barang masuk (baru, bekas, atau rusak), dipakai, atau diserahterimakan, dan lihat stoknya saat itu juga. Barang diidentifikasi dengan label QR yang dipindai dari kamera HP. Aplikasi tidak menyimpan saldo. Stok dihitung dari seluruh riwayat transaksi, jadi selalu bisa diaudit. Ada tiga kantong stok: baru, bekas (layak pakai kembali), dan rusak. Setiap transaksi memindahkan jumlah dari satu kantong ke kantong lain:檢視完整 README ↗
Manajemen sparepart SSES T2 — catat setiap barang masuk (baru, bekas, atau rusak), dipakai, atau diserahterimakan, dan lihat stoknya saat itu juga. Barang diidentifikasi dengan label QR yang dipindai dari kamera HP.
Produksi: https://masih-berapa.vercel.app · Repo: seevent/masih-berapa
| Modul | Rute | Fungsi |
|---|---|---|
| Dashboard | / | total stok dan tren 6 bulan, SKU di bawah minimum, rasio baru vs bekas, level inventaris, top moving (pemakaian), transaksi terbaru |
| Katalog | /catalog | CRUD sparepart (tampilan list bawaan, bisa grid), satuan bawaan UNIT, stok minimum otomatis, SKU otomatis SP-001, tipe peralatan lewat daftar kompatibel (banyak tipe, tanpa "tipe utama") |
| Input Transaksi | /input-sparepart | catat Masuk, Pakai, Serah Terima; satu transaksi bisa berisi banyak sparepart, tiap baris dengan kondisi baru / bekas / rusak; Pakai wajib satu unit; petugas = personel berdinas (atau tulis manual bila jadwal kosong) |
| History & Audit | /history | riwayat dengan aliran stok, edit, hapus, ekspor Excel |
| Scanner QR | /scanner | pindai QR berkali-kali: tiap scan menambah sparepart ke daftar (scan ulang = jumlah +1), lalu simpan sekaligus |
| Cetak Label | /print | label thermal 50×30 / 70×40 mm dan lembar stiker Tom & Jerry, keluaran PDF |
| Peringatan | /alerts | umur komponen terpasang per unit vs MTBF otomatis dari data; kecukupan stok 30 hari @ SLA 98% (titik pesan Poisson) |
| Kebutuhan | /needs | kebutuhan tahunan dari pemakaian riil dan rekomendasi order, ekspor Excel |
| Laporan | /reports | klasifikasi fast / medium / slow moving dari pemakaian (Pakai) 12 bulan terakhir |
Aplikasi tidak menyimpan saldo. Stok dihitung dari seluruh riwayat transaksi, jadi selalu bisa diaudit. Ada tiga kantong stok: baru, bekas (layak pakai kembali), dan rusak. Setiap transaksi memindahkan jumlah dari satu kantong ke kantong lain:
| Transaksi | Berkurang dari | Bertambah ke |
|---|---|---|
| Masuk | luar gudang | baru / bekas / rusak (dipilih per baris) |
| Pakai | baru atau bekas (dipilih per baris) | keluar gudang (dipasang ke unit) |
| Serah Terima (serahkan) | baru / bekas / rusak | keluar gudang |
| Serah Terima (terima) | luar gudang | baru / bekas / rusak |
Stok di kantong mana pun tidak boleh minus; transaksi yang membuatnya minus ditolak seluruhnya (semua baris atau tidak sama sekali). "Stok tersedia" = baru + bekas. Tipe lama Bekas dan Rusak sudah dihapus dari form (2 Okt 2026) tetapi baris lama tetap dihitung.
MTBF tidak diisi manual. Setiap Pakai mencatat unit peralatan; pemasangan kedua dan seterusnya di unit yang sama dihitung sebagai penggantian. MTBF per sparepart = total hari terpasang di semua unit ÷ jumlah penggantian. Sebelum ada penggantian, statusnya "Belum cukup data". Rincian: docs/specs/predictive-maintenance.md.
React 19 · TypeScript 5.9 (strict) · Vite 6 · Tailwind CSS 4 · React Router 7 · Supabase (@supabase/supabase-js) · Recharts · html5-qrcode + qrcode.react · xlsx · jspdf + html2canvas-pro · lucide-react
Tanpa backend: browser berbicara langsung ke Supabase. Hosting di Vercel.
Prasyarat: Node.js 18 atau lebih baru dan akses ke project Supabase.
git clone https://github.com/seevent/masih-berapa.git
cd masih-berapa
npm install
cp .env.example .env # lalu isi nilainya (lihat tabel di bawah)
npm run dev # http://localhost:5173
| Variabel | Wajib | Keterangan |
|---|---|---|
VITE_SUPABASE_URL | ya | URL project Supabase |
VITE_SUPABASE_ANON_KEY | ya | anon / publishable key |
VITE_CLOUDINARY_CLOUD_NAME, VITE_CLOUDINARY_UPLOAD_PRESET | ya, untuk menyimpan transaksi | Cloud name dan nama unsigned upload preset Cloudinary untuk foto evidence. Tanpa keduanya form menolak mengunggah foto, dan foto wajib untuk setiap transaksi baru |
VITE_PUBLIC_APP_URL | tidak | URL yang dienkode di QR label; bawaan https://masih-berapa.vercel.app. Atur sebelum mencetak label bila domain berbeda |
Tanpa dua variabel pertama aplikasi tetap terbuka tetapi menampilkan "Database tidak terhubung". Di Vercel, isi variabel untuk lingkungan Production dan Preview.
| Perintah | Fungsi |
|---|---|
npm run dev | server pengembangan |
npm run typecheck | periksa tipe (tsc --noEmit) |
npm run build | periksa tipe lalu build ke dist/ (galat tipe menggagalkan build) |
npm run preview | jalankan hasil build secara lokal |
npm test | tes otomatis (vitest) untuk fungsi murni |
node_modules/ dan dist/ tidak disimpan di git; jalankan npm install setelah mengambil kode.
masih-berapa/
├── src/
│ ├── pages/ # satu file per rute
│ ├── components/ # layout/, mutation/ (field Rusak & Serah Terima, pilihan unit), predictive/
│ ├── context/ # InventoryContext (semua data + aksi), NotificationContext (toast)
│ ├── utils/ # stock.ts (aturan stok), reliability.ts (MTBF, titik pesan) + tes, compatibility.ts, shiftUtils.ts
│ ├── lib/ # klien Supabase
│ └── types/ # tipe domain
├── docs/ # dokumentasi (lihat di bawah) + migrations/ + skema SQL
├── AGENTS.md # panduan untuk agen AI
├── vercel.json # rewrite SPA
└── .env.example
| Dokumen | Isi |
|---|---|
| docs/PRD.md | produk: masalah, tujuan, pengguna, kebutuhan, aturan bisnis, roadmap |
| docs/ARCHITECTURE.md | arsitektur: komponen, aliran data, mesin stok, build/deploy, keputusan desain |
| docs/DATABASE.md | skema Supabase, model stok, RLS, migrasi, risiko |
| AGENTS.md | aturan kerja untuk agen AI di repo ini |
| HANDOFF.md | catatan serah terima sesi (snapshot Juli 2026, sebagian sudah usang) |
| docs/specs/predictive-maintenance.md | spesifikasi aktif: predictive maintenance v2, MTBF otomatis (disetujui, sudah diimplementasikan) |
docs/specs/ lainnya, docs/tickets/ | spesifikasi dan tiket lama (historis, sudah tidak sesuai produk saat ini) |
graphify-out/ | knowledge graph kode (graphify update . untuk memperbarui) |
Supabase PostgreSQL yang dipakai bersama aplikasi SSES T2 lain. Tabel yang ditulis aplikasi ini: spareparts, stock_mutations, sparepart_compatibility. Master peralatan/lokasi/personel (bersama) hanya dibaca. Perubahan skema harus lewat migrasi di docs/migrations/ dan persetujuan pemilik database. Lihat docs/DATABASE.md.
anon, sehingga siapa pun yang membuka aplikasi dapat mengubah data stok.src/utils/reliability.ts).Daftar lengkap dan rencana penanganannya: PRD.md bagian 12 dan ARCHITECTURE.md bagian 12.
Kerjakan di branch, buka Pull Request, dan biarkan pemilik me-merge. Vercel membuat link preview per PR (memakai database produksi yang sama). Jalankan npm run typecheck, npm test, dan npm run build sebelum membuka PR. Panduan lebih rinci untuk agen AI ada di AGENTS.md.
Belum ditetapkan.