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。 以下为已保存的摘录。
Nama InsMobile (inspeksi mobile) adalah nama sistem ini dalam Rancangan Aktualisasi Arif Rahman Hakim — PD CPNS Kabupaten Lima Puluh Kota 2026. Website pemeriksaan K3RS untuk RSUD dr. Achmad Darwis. Tiga formulir diisi dari ponsel saat ronde, tersimpan di Neon Postgres, dan direkap di /admin dengan unduhan Excel. Menggantikan tiga Google Form yang sebelumnya dipakai. Pertanyaan, pilihan jawaban, dan status wajib-isi disalin apa adanya dari form asli.查看完整 README ↗
Nama InsMobile (inspeksi mobile) adalah nama sistem ini dalam Rancangan Aktualisasi Arif Rahman Hakim — PD CPNS Kabupaten Lima Puluh Kota 2026.
Website pemeriksaan K3RS untuk RSUD dr. Achmad Darwis. Tiga formulir
diisi dari ponsel saat ronde, tersimpan di Neon Postgres, dan direkap di
/admin dengan unduhan Excel.
Menggantikan tiga Google Form yang sebelumnya dipakai. Pertanyaan, pilihan jawaban, dan status wajib-isi disalin apa adanya dari form asli.
| Formulir | Rute | Jumlah pertanyaan |
|---|---|---|
| Inspeksi Lingkungan K3RS | /forms/inspeksi-lingkungan | 36 dalam 8 bagian |
| Pemeriksaan Kondisi APAR | /forms/kondisi-apar | 10 |
| Tanggap Darurat & Kebakaran | /forms/tanggap-darurat | 19 dalam 2 bagian |
Formulir diisi dari ponsel: satu ketukan per pertanyaan, hijau untuk kondisi aman dan merah untuk temuan. Progres tersimpan di perangkat, jadi ronde yang terputus bisa dilanjutkan.
npm install
cp .env.example .env.local # lalu isi nilainya
npm run dev
Buka http://localhost:3000.
| Nama | Wajib | Keterangan |
|---|---|---|
DATABASE_URL | ya | Connection string Neon Postgres. DATABASE_URL_UNPOOLED dipakai bila DATABASE_URL kosong. |
ADMIN_USERNAME | ya | Nama pengguna untuk /admin. |
ADMIN_PASSWORD | ya | Kata sandi untuk /admin. |
SESSION_SECRET | ya | Penanda tangan cookie sesi. Minimal 32 karakter acak. |
Membuat SESSION_SECRET:
node -e "console.log(require('crypto').randomBytes(36).toString('base64url'))"
Tabel dibuat otomatis saat permintaan pertama — tidak ada langkah migrasi terpisah. Semua jawaban disimpan di satu tabel:
submissions(id, form_slug, area, inspection_date, answers jsonb, findings, created_at)
answers memakai id pertanyaan asli dari Google Form (q<entry-id>), sehingga
kolom tetap cocok meskipun teks pertanyaan diubah di kemudian hari.
findings menghitung jawaban Tidak dan Rusak — angka inilah yang
ditampilkan di rekap admin.
/admin meminta login, lalu menampilkan:
Berkas .xlsx berisi tiga lembar, satu per formulir. Satu baris = satu
pemeriksaan, satu kolom = satu pertanyaan, ditambah kolom Jumlah temuan.
Jawaban Tidak/Rusak diwarnai merah. Rentang tanggal di halaman admin ikut
diterapkan pada unduhan.
Tangkapan layar di atas dibuat dengan data fiktif. Untuk membuatnya ulang,
jalankan npm run dev lalu:
npm run seed:demo # isi 9 pemeriksaan contoh
npm run seed:demo -- --clean # hapus kembali baris yang tadi diisi
Baris contoh masuk lewat POST /api/submit, jadi ikut divalidasi seperti
pengisian sungguhan. Id yang terbentuk dicatat di scripts/.demo-ids.json;
--clean hanya menghapus id itu, tidak pernah baris lain. Skrip menolak
mengisi tabel yang sudah berisi data kecuali diberi --force.
src/lib/forms.ts dibuat otomatis dari HTML Google Form asli. Untuk
menyesuaikan pertanyaan, sunting berkas itu langsung — strukturnya sudah
tidak bergantung pada Google Form lagi. Tambahkan pertanyaan baru dengan id
yang belum pernah dipakai; jangan mengubah id lama, karena id itulah yang
mengikat data lama ke kolomnya.
Deploy ke Vercel. Setel keempat variabel lingkungan di Project Settings → Environment Variables sebelum deploy pertama.