title: “Projects” description: “Manajemen proyek dengan timeline, milestones, budget tracking, team assignment, task management, time tracking, dan auto-invoice di SNISHOP ERP.”
Projects

Projects.jsx (778 baris) dengan integrasi langsung ke CRM (Customer), HR (CompanyMember), dan Finance (Invoice).
Setiap proyek memiliki budget tracking, payment progress, milestone yang bisa dipantau secara realtime, serta dukungan untuk task management, time tracking, dan recurring tasks. Saat proyek baru dibuat, sistem otomatis membuat invoice terkait di modul Finance.
Arsitektur Komponen
Entity Relationship Diagram
Entity: Project
Entitas utama yang merepresentasikan sebuah proyek klien. Terintegrasi langsung dengan CRM untuk data klien, HR untuk tim, dan Finance untuk invoice.Schema Tabel
Sub-Object: Milestone
Setiap objek dalam arraymilestones memiliki struktur sebagai berikut:
Entity: Task
Entitas tugas yang bisa berdiri sendiri di workspace atau terhubung ke proyek. Mendukung sub-tasks hierarkis, time tracking, integrasi Google Calendar, dan recurring tasks.Schema Tabel
Sub-Object: Time Entry (Embedded di Task)
Entity: TimeEntry
Entitas terpisah untuk pencatatan waktu kerja (timesheet) yang terhubung ke proyek dan tugas. Digunakan untuk tracking billable hours dan approval workflow.Schema Tabel
Entity: RecurringTask
Template tugas berulang yang secara otomatis membuat instance Task baru sesuai frekuensi yang ditentukan. Berguna untuk tugas rutin seperti daily standup, weekly report, atau monthly review.Schema Tabel
Entity: Comment
Sistem komentar yang mendukung threaded replies dan mention. Dapat dipasang pada task maupun note.Schema Tabel
Entity: Label
Label/tag berwarna untuk kategorisasi task dan organisasi workspace.Schema Tabel
Entity: Workspace
Workspace adalah ruang kerja yang mengelompokkan tasks, labels, dan recurring tasks. Bisa bersifat personal atau tim.Schema Tabel
Sub-Object: Workspace Settings
Status Proyek
Status Tugas (Task)
Status Time Entry (Approval)
Prioritas (Project & Task)
Frekuensi Recurring Task
Budget & Payment Tracking
Payment progress dihitung dengan rumus:Contoh Tracking
Cost Variance Tracking
Proyek juga mendukung tracking biaya aktual vs budget:Stats Dashboard
Auto-Invoice Integration
Saat proyek baru dibuat, sistem otomatis membuat entitas Invoice yang terhubung:Milestone Management
Setiap milestone memiliki:Flow Penyelesaian Milestone
Task Management
Membuat dan Menugaskan Task
Sub-Task Hierarchy
Task mendukung struktur hierarki parent-child untuk decomposisi pekerjaan yang lebih detail: Setiap task dapat memiliki:- Parent task (
parent_task_id) — referensi ke task induk - Sub-tasks (
sub_tasks) — array of child task IDs - Hierarki bisa multi-level (nested)
Time Tracking pada Task
Recurring Tasks
Recurring tasks memungkinkan pembuatan tugas otomatis berdasarkan jadwal yang ditentukan.Konfigurasi Recurring
Flow Recurring Task Generation
Time Entry & Timesheet
Flow Pencatatan Waktu
Billable vs Non-Billable
Team Assignment
Anggota tim dipilih dari entity CompanyMember dan disimpan di fieldteam_members (array of IDs). Setiap anggota bisa dilihat di ProjectCard dengan avatar badge.
Peran dalam Proyek
Komentar & Kolaborasi
Sistem komentar mendukung diskusi pada task dengan fitur mention dan threaded replies.Integrasi Lintas Modul
Filter & Pencarian
RBAC Permission Matrix
Berikut adalah matriks hak akses berdasarkan peran terhadap entitas Projects dan Task:Cara Akses
Dari sidebar, klik menu Productivity > Projects.Flow Penggunaan
Membuat Proyek Baru
- Buka halaman Projects dari sidebar — lihat ringkasan stats di bagian atas
- Klik “Proyek Baru” untuk membuka modal form
- Isi nama proyek, deskripsi, pilih klien dari daftar Customer
- Tentukan budget proyek, tanggal mulai, dan deadline
- Set prioritas proyek sesuai urgensi
- Tambahkan milestones sebagai target progress per fase
- Assign anggota tim dari daftar CompanyMember
- Tambahkan tag untuk kategorisasi
- Klik Simpan — invoice otomatis dibuat di modul Finance
- Proyek baru muncul dengan status
planning
Mengelola Task dalam Proyek
- Buka detail proyek dari ProjectCard atau ProjectDetailModal
- Klik “Tambah Task” untuk membuat tugas baru
- Isi judul, deskripsi, prioritas, dan tenggat waktu
- Assign tugas ke anggota tim yang tersedia
- Set estimasi waktu pengerjaan
- Aktifkan time tracking jika perlu (
is_time_tracked: true) - Buat sub-tasks untuk decomposisi pekerjaan yang lebih detail
- Monitor progress task melalui status updates
Mencatat Waktu Kerja
- Buka modul Time Entry dari sidebar
- Pilih proyek dan tugas yang dikerjakan
- Isi tanggal, waktu mulai/selesai, atau durasi langsung
- Tandai sebagai
billablejika dapat ditagihkan ke klien - Ajukan untuk approval (status:
submitted) - Manager mereview dan approve/reject
Menyelesaikan Proyek
- Pastikan semua milestone berstatus
completed - Pastikan semua task berstatus
done - Verifikasi total
actual_costvsbudget - Update
progresske 100% - Ubah status proyek ke
completed - Lakukan retrospective dan catat pelajaran untuk proyek berikutnya
Tips
- Selalu isi
client_namedenormalized supaya card tetap tampil cepat tanpa perlu join ke Customer entity - Gunakan status
on_holddaripada menghapus proyek — data tetap tersimpan dan bisa dilanjutkan nanti - Review payment progress secara mingguan untuk memastikan cashflow proyek sehat
- Di akhir proyek, lakukan retrospective dan catat pelajaran untuk proyek berikutnya
- Break down proyek besar menjadi 5-7 milestones supaya progress lebih terukur
- Assign minimal 1 project manager per proyek untuk koordinasi tim
- Gunakan
tagsuntuk kategorisasi proyek (misalnya:web,mobile,design,urgent) - Manfaatkan recurring tasks untuk aktivitas rutin seperti daily standup atau weekly report
- Track time secara konsisten agar data billable akurat untuk invoice
- Gunakan sub-tasks untuk decomposisi pekerjaan yang kompleks menjadi bagian yang manageable
- Set
reminder_configpada task penting agar tidak ada tenggat yang terlewat - Integrasi Google Calendar (
google_event_id) membantu sinkronisasi deadline ke kalender pribadi - Monitor
costVariancesecara berkala untuk mendeteksi over-budget lebih dini - Gunakan label berwarna untuk visualisasi cepat prioritas dan kategori task di workspace
