Skip to main content

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

Projects

Projects Halaman Projects mengelola seluruh siklus hidup proyek — dari planning hingga completion. Dibangun di atas 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 array milestones 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 field team_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

  1. Buka halaman Projects dari sidebar — lihat ringkasan stats di bagian atas
  2. Klik “Proyek Baru” untuk membuka modal form
  3. Isi nama proyek, deskripsi, pilih klien dari daftar Customer
  4. Tentukan budget proyek, tanggal mulai, dan deadline
  5. Set prioritas proyek sesuai urgensi
  6. Tambahkan milestones sebagai target progress per fase
  7. Assign anggota tim dari daftar CompanyMember
  8. Tambahkan tag untuk kategorisasi
  9. Klik Simpan — invoice otomatis dibuat di modul Finance
  10. Proyek baru muncul dengan status planning

Mengelola Task dalam Proyek

  1. Buka detail proyek dari ProjectCard atau ProjectDetailModal
  2. Klik “Tambah Task” untuk membuat tugas baru
  3. Isi judul, deskripsi, prioritas, dan tenggat waktu
  4. Assign tugas ke anggota tim yang tersedia
  5. Set estimasi waktu pengerjaan
  6. Aktifkan time tracking jika perlu (is_time_tracked: true)
  7. Buat sub-tasks untuk decomposisi pekerjaan yang lebih detail
  8. Monitor progress task melalui status updates

Mencatat Waktu Kerja

  1. Buka modul Time Entry dari sidebar
  2. Pilih proyek dan tugas yang dikerjakan
  3. Isi tanggal, waktu mulai/selesai, atau durasi langsung
  4. Tandai sebagai billable jika dapat ditagihkan ke klien
  5. Ajukan untuk approval (status: submitted)
  6. Manager mereview dan approve/reject

Menyelesaikan Proyek

  1. Pastikan semua milestone berstatus completed
  2. Pastikan semua task berstatus done
  3. Verifikasi total actual_cost vs budget
  4. Update progress ke 100%
  5. Ubah status proyek ke completed
  6. Lakukan retrospective dan catat pelajaran untuk proyek berikutnya

Tips

  • Selalu isi client_name denormalized supaya card tetap tampil cepat tanpa perlu join ke Customer entity
  • Gunakan status on_hold daripada 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 tags untuk 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_config pada task penting agar tidak ada tenggat yang terlewat
  • Integrasi Google Calendar (google_event_id) membantu sinkronisasi deadline ke kalender pribadi
  • Monitor costVariance secara berkala untuk mendeteksi over-budget lebih dini
  • Gunakan label berwarna untuk visualisasi cepat prioritas dan kategori task di workspace

Enum Reference

Ringkasan Semua Enum