Knowledge Search untuk Obsidian Notes dengan MongoDB
Aplikasi pencarian catatan berbasis web dengan big data analytics yang mengindeks Obsidian note(.md, .txt) Vault ke MongoDB(noSQL), mendukung recursive vault scan, metadata-aware search engine, advanced indexing, note reader UI, dan fallback cache strategy untuk production deploy.

Sistem pencarian dan pengelolaan untuk vault Obsidian, dibangun di atas Express 5 dan MongoDB: pencarian full-text publik atas catatan, serta panel admin berpengaman JWT untuk menyunting, mengimpor berkas secara massal, dan mengelola pohon folder — dideploy secara serverless di Vercel.
Sorotan
- Pencarian yang tahan salah ketik — text index MongoDB menangani kasus normal, dengan cadangan regex di belakangnya untuk kueri yang tidak tertangkap indeks. Hasil diberi skor berdasarkan letak kecocokan: judul mengalahkan nama berkas, nama berkas mengalahkan path, path mengalahkan folder, dan folder mengalahkan isi tulisan.
- Driver MongoDB native, bukan Mongoose — tanpa lapisan ODM, sehingga kueri dan indeks ditulis langsung. Indeks (text, biasa, dan indeks unik pada email) dibuat saat startup, bukan diandaikan sudah ada.
- Tetap menjawab saat basis data mati — cache JSON di
data/notes-cache.jsonmenjadi cadangan ketika MongoDB tidak terjangkau, sehingga kegagalan koneksi menurunkan kualitas layanan, bukan mematikannya. - Penanganan koneksi berbentuk serverless — pooling dibatasi 10 koneksi dengan sambung-ulang otomatis dan ping tiap 25 detik, sebab fungsi serverless yang mengandaikan koneksi berumur panjang justru yang paling cepat gagal di Vercel.
- Unggahan yang tidak pernah menyentuh filesystem — multer berjalan di memori, karena fungsi serverless tidak punya disk yang bisa ditulisi untuk menampung impor massal.
- Dua jalur membuat admin pertama, keduanya sekali pakai — CLI interaktif, atau endpoint HTTP sekali jalan yang dijaga
SETUP_KEY, sehingga proses awal tidak pernah meninggalkan kata sandi bawaan.
Fitur Utama
- Pencarian publik — kueri full-text, saran autocomplete dari judul catatan, penelusuran pohon folder beserta jumlah catatan per folder, dan pembacaan catatan satuan, semuanya tanpa perlu akun.
- Pembatasan laju di tempat yang tepat — 60 pencarian per menit per IP (localhost dikecualikan) dan 10 percobaan login per 15 menit, sehingga endpoint yang mahal dan endpoint kredensial dijaga terpisah.
- CRUD admin — membuat, membaca, memperbarui, dan menghapus catatan dengan paginasi, penyaringan, dan pengurutan.
- Pengelolaan folder — membuat, mengganti nama secara massal, dan menghapus secara rekursif di seluruh pohon.
- Impor massal — mengunggah berkas
.mddan.txtsambil mempertahankan struktur foldernya, lewat seret-dan-lepas di antarmuka admin. - Diperkeras sejak awal — header keamanan helmet, CORS, dan batas body 1 MB, dengan sesi JWT (HS256, 24 jam) di atas hash kata sandi bcrypt 12 putaran.
Tech Stack
- Node.js ≥ 18 (CommonJS)
- Express 5.2.1
- MongoDB 7.x (driver native, tanpa Mongoose)
- jsonwebtoken 9 (HS256, 24 jam) + bcryptjs 3 (12 putaran)
- helmet 8, express-rate-limit 8, cors
- multer 1.4.5 (unggahan di memori)
- Frontend HTML + CSS + JavaScript vanilla (tanpa framework)
- Vercel serverless (
@vercel/node)
Status & Kematangan
Aktif, dan merupakan project dengan pengujian terbaik di katalog ini: 176 test, semuanya lulus. Ia sekaligus menjadi backend yang diajak bicara oleh klien Android Catatan — aplikasi itu tidak menyimpan apa pun secara lokal dan tidak memegang kredensial basis data, sehingga setiap jaminan kontrol akses yang ia tampilkan sebenarnya dikerjakan oleh verifyAdmin di layanan ini.
Metrik Terukur
| Commit | 95 |
| Rentang Tanggal | 17 Apr 2026 – 13 Agu 2026 |
| Baris kode | 21.351 |
| Test | 176, semua lulus |