Skip to main content

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 Halaman Notes menyediakan ruang untuk menulis catatan personal maupun kerja dengan editor rich-text ReactQuill. Dibangun di atas 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 melalui quillModules:

Export Catatan

PDF Export

Menggunakan jsPDF + 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) dan icon (emoji) untuk identifikasi visual
  • Label bersifat per-user dalam workspace — user_id dan workspace_id menentukan 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 dengan pinned = 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
Pencarian strip HTML tags dari content dan mencari di title + content:
Proses pencarian:
  1. User mengetik di search bar
  2. Sistem melakukan strip HTML tags dari semua content catatan
  3. Mencocokkan query terhadap title dan content (tanpa HTML)
  4. Hasil ditampilkan di grid/list view sesuai mode aktif
  5. 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_used pada entitas User menyimpan total penggunaan

Komentar pada Catatan

Sistem komentar memungkinkan kolaborasi tim langsung pada catatan melalui entitas Comment.

Alur Komentar

Threaded Replies

Komentar mendukung reply bertingkat melalui field parent_comment_id:

Fitur Komentar

Hierarki Catatan (Parent-Child)

Catatan mendukung struktur hierarki melalui field parent_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 menggunakan ai_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 di WorkspaceMember, berikut hak akses terhadap fitur Notes:
Catatan: ⚙️ = tergantung setting allow_public_sharing di workspace. Role viewer hanya 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

  1. Buka halaman Notes dari sidebar — lihat catatan dalam masonry grid
  2. Klik “Catatan Baru” untuk membuka editor ReactQuill
  3. Tulis judul dan isi catatan dengan formatting yang dibutuhkan
  4. Tambahkan labels untuk organisasi — ketik label baru atau pilih yang sudah ada
  5. Pin catatan penting dengan klik ikon pin — muncul di atas daftar
  6. Gunakan search bar untuk mencari catatan lama berdasarkan kata kunci
  7. Export catatan ke PDF untuk sharing atau Word untuk editing lebih lanjut
  8. Arsipkan catatan yang sudah tidak aktif — pindah ke Archive view
  9. Gunakan AI Assistant untuk generate ide, ringkas catatan, atau rewrite
  10. Tambahkan komentar untuk berdiskusi dengan tim — gunakan @mention untuk notifikasi
  11. Buat hierarki catatan dengan parent-child untuk organisasi yang lebih terstruktur
  12. 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_time untuk catatan yang memiliki deadline atau tindak lanjut
  • Pertimbangkan is_public dengan hati-hati — pastikan tidak ada informasi sensitif sebelum membagikan
  • Monitor storage_used di profil user untuk mengontrol penggunaan storage