title: “Notes” description: “Catatan rich-text dengan ReactQuill, workspace scoping, label system, pin, archive, PDF/Word export, dan AI assistant di SNISHOP ERP.”
Notes

Notes.jsx (1088 baris) dengan arsitektur multi-layer realtime sync, integrasi AI assistant, dan export ke PDF/Word.
Sistem ini menggunakan 6 mekanisme sync berbeda untuk memastikan catatan selalu terupdate di semua tab dan device. Catatan diorganisir dengan label, bisa di-pin untuk akses cepat, dan diarsipkan jika sudah tidak aktif.
Arsitektur Komponen
Ringkasan Fitur Utama
Entity Relationship Diagram
Entity Schema: Note
Entitas utama untuk menyimpan catatan dalam sistem SNISHOP ERP.Block Schema (Nested Object)
Setiap catatan dapat menyimpan konten sebagai array block terstruktur:Block Type Enum
Entity Schema: Label
Label adalah entitas terpisah yang merepresentasikan tag terstruktur dengan warna dan ikon.Entity Schema: Comment
Komentar yang dapat ditempelkan pada catatan (atau task) untuk kolaborasi tim.Entity Schema: Document
Dokumen yang dapat dikaitkan dengan catatan atau digunakan secara independen.Document Category Enum
Entity Schema: Workspace
Workspace adalah unit organisasi yang mengelilingi catatan, task, dan label.Workspace Settings Object
Entity Schema: WorkspaceMember
Keanggotaan workspace yang menentukan hak akses setiap pengguna.Workspace Member Role Enum
Workspace Member Permissions Object
Entity Relationship Diagram (Ringkas)
Siklus Hidup Catatan (Note Lifecycle)
Penjelasan State
4 View di Sidebar
Layout: Masonry Grid
NoteMasonryGrid menyediakan layout responsif dengan 4 breakpoint:
Toggle antara grid view dan list view tersedia di toolbar.
ReactQuill Rich Text Editor
NoteEditor menggunakan ReactQuill dengan toolbar yang bisa dikustomisasi melaluiquillModules:
Export Catatan
PDF Export
MenggunakanjsPDF + html2canvas:
Word Export
Menggunakan HTML blob download:6 Layer Realtime Sync
Label System
Label adalah tag bebas yang bisa ditambahkan ke catatan. Dalam SNISHOP ERP, label direpresentasikan sebagai entitas terpisah (Label) yang memiliki nama, warna, dan ikon.
Alur Pembuatan Label
Konvensi Label
- Label dibuat secara dinamis saat mengetik — tidak perlu pre-define
- Sidebar menampilkan semua label yang sudah ada dari entitas
Label - Klik label di sidebar untuk memfilter catatan dengan label tersebut
- Setiap label memiliki
color(hex) danicon(emoji) untuk identifikasi visual - Label bersifat per-user dalam workspace —
user_iddanworkspace_idmenentukan scope - Hindari duplikasi dengan nama berbeda — konsistensi label meningkatkan efektivitas organisasi
Contoh Label yang Direkomendasikan
Pinned Notes
Catatan yang di-pin ditampilkan terpisah di bagian atas: Catatan denganpinned = true akan:
- Muncul di section terpisah paling atas pada masonry grid
- Mendapat indikator visual (ikon pin)
- Tetap muncul di hasil pencarian dan filter label
- Bisa di-unpin kapan saja untuk kembali ke urutan normal
Search
Pencarian strip HTML tags dari content dan mencari di title + content:- User mengetik di search bar
- Sistem melakukan strip HTML tags dari semua
contentcatatan - Mencocokkan query terhadap
titledancontent(tanpa HTML) - Hasil ditampilkan di grid/list view sesuai mode aktif
- Pencarian berlaku lintas semua view (aktif, archived) kecuali trash
Storage Tracking
Sidebar menampilkan indikator penggunaan storage: Storage tracking memperhitungkan:- Ukuran konten HTML setiap catatan
- Gambar yang di-embed dalam catatan
- Block data yang tersimpan
- Field
storage_usedpada entitasUsermenyimpan total penggunaan
Komentar pada Catatan
Sistem komentar memungkinkan kolaborasi tim langsung pada catatan melalui entitasComment.
Alur Komentar
Threaded Replies
Komentar mendukung reply bertingkat melalui fieldparent_comment_id:
Fitur Komentar
Hierarki Catatan (Parent-Child)
Catatan mendukung struktur hierarki melalui fieldparent_id:
Hierarki memungkinkan:
- Membuat sub-catatan dari catatan utama
- Organisasi catatan yang lebih terstruktur
- Navigasi parent-child melalui field
parent_id - Kedalaman hierarki tidak dibatasi (recursive)
Template Catatan
Catatan bisa disimpan sebagai template untuk digunakan ulang:
Template berguna untuk:
- Format meeting notes yang konsisten
- Checklist standar untuk proses berulang
- Format laporan berkala
Integrasi AI
Alur AI Assistant
Penggunaan AI Credits
Integrasi AI menggunakanai_credits dari entitas User:
- Setiap operasi AI mengurangi
ai_monthly_usage - Kuota default: 10 credits per bulan (
ai_credits = 10) - Pengguna bisa menambah kuota melalui
ai_addon_quota - Period reset tercatat di
ai_usage_period_start
Filter & Pencarian
RBAC Permission Matrix
Berdasarkan role diWorkspaceMember, berikut hak akses terhadap fitur Notes:
Catatan: ⚙️ = tergantung settingallow_public_sharingdi workspace. Roleviewerhanya bisa melihat, tidak bisa mengubah.
Enum Reference
Ringkasan Semua Enum dalam Sistem Notes
Alur Penggunaan Lengkap
Membuat Catatan Baru
Berbagi Catatan ke Publik
Menandai Catatan dengan Label
Mengarsipkan dan Restore Catatan
Cara Akses
Dari sidebar, klik menu Productivity > Notes.Flow Penggunaan
- Buka halaman Notes dari sidebar — lihat catatan dalam masonry grid
- Klik “Catatan Baru” untuk membuka editor ReactQuill
- Tulis judul dan isi catatan dengan formatting yang dibutuhkan
- Tambahkan labels untuk organisasi — ketik label baru atau pilih yang sudah ada
- Pin catatan penting dengan klik ikon pin — muncul di atas daftar
- Gunakan search bar untuk mencari catatan lama berdasarkan kata kunci
- Export catatan ke PDF untuk sharing atau Word untuk editing lebih lanjut
- Arsipkan catatan yang sudah tidak aktif — pindah ke Archive view
- Gunakan AI Assistant untuk generate ide, ringkas catatan, atau rewrite
- Tambahkan komentar untuk berdiskusi dengan tim — gunakan @mention untuk notifikasi
- Buat hierarki catatan dengan parent-child untuk organisasi yang lebih terstruktur
- Simpan catatan sebagai template untuk format yang sering digunakan ulang
Tips
- Gunakan label yang konsisten — buat konvensi label untuk tim (misalnya:
meeting,ide,todo) - Pin hanya catatan yang benar-benar sering diakses — terlalu banyak pin mengurangi efektivitas
- Export ke PDF secara berkala sebagai backup di luar sistem
- Manfaatkan AI Assistant untuk brainstorming atau merapikan catatan meeting yang berantakan
- Review dan bersihkan catatan lama secara berkala — archive yang menumpuk sama dengan folder yang berantakan
- Gunakan hierarki parent-child untuk catatan yang memiliki sub-topik
- Manfaatkan warna label (
color) untuk identifikasi visual cepat di masonry grid - Simpan format catatan rutin sebagai template (
is_template = true) untuk konsistensi - Gunakan komentar dan @mention untuk kolaborasi — hindari membuat catatan terpisah untuk diskusi
- Atur
reminder_timeuntuk catatan yang memiliki deadline atau tindak lanjut - Pertimbangkan
is_publicdengan hati-hati — pastikan tidak ada informasi sensitif sebelum membagikan - Monitor
storage_useddi profil user untuk mengontrol penggunaan storage
