From 2cfd5c5899c96edd94d7a1b987912d0fc427d3c0 Mon Sep 17 00:00:00 2001 From: Nafies Luthfi Date: Tue, 21 Nov 2017 21:30:59 +0800 Subject: [PATCH] Add CONTRIBUTING.md and update CONCEPT.md --- CONCEPT.md | 168 ++++++++++++++++++++++++++++++++++++-------------------- CONTRIBUTING.md | 78 ++++++++++++++++++++++++++ 2 files changed, 186 insertions(+), 60 deletions(-) create mode 100644 CONTRIBUTING.md diff --git a/CONCEPT.md b/CONCEPT.md index 0511a72..0e70ba3 100644 --- a/CONCEPT.md +++ b/CONCEPT.md @@ -1,102 +1,150 @@ # Free PMO -Free PMO adalah sebuah tool untuk mempermudah pengelolaan dan monitor project bagi feelancer dan agensi. +Free PMO adalah sebuah alat bantu untuk mempermudah pengelolaan dan monitor project bagi *feelancer* dan agensi/*software house* atau perusahaan yang memiliki layanan berupa project untuk customernya. ## Konsep -### 1. Project +Berikut ini adalah konsep-konsep fitur yang telah dan akan diimplementasikan pada Free PMO. -Project adalah pekerjaan yang dikerjakan oleh agency untuk seorang customernya +### 1. User dan Jenis Pengguna -1. Sebuah project adalah milik sebuah Customer -2. Project memiliki beberapa Job/Item pekerjaan -3. Project memiliki beberapa Invoice -4. Project memiliki beberapa Pembayaran (dengan atau tanpa invoice) -5. Project memiliki beberapa Meeting (pertemuan dengan customer) +Free PMO memiliki dua jenis pengguna/tipe user : -#### Relasi +1. **Administrator** (mengendalikan dan mengelola seluruh data) +2. **Worker** (pekerja yang ditugasi job dan diberikan pembayaran fee) + +Tidak menutup kemungkinan jika jenis pengguna ini ditambah lagi. + +### 2. Project + +Project adalah pekerjaan yang dikerjakan oleh agensi untuk customernya + +1. Sebuah **project** milik satu **Customer** +2. **Project** memiliki beberapa **Job**/Item pekerjaan +3. **Project** memiliki beberapa **Invoice** (TODO) +4. **Project** memiliki beberapa **Pembayaran** (dengan atau tanpa invoice) +5. **Project** memiliki beberapa **Meeting** (pertemuan dengan customer) +6. **Project** memiliki beberapa **Langganan** (subscription) +7. **Project** memiliki beberapa **File** Dokumen (TODO) -1. Project belongs to a Customer; Customer has 0 to many Projects -2. Project has 0 to many Features/Project Items; Feature belongs to a Project -3. Project has 0 to many Invoices; Invoice belongs to a Project -4. Project has 0 to many Payments; Payment belongs to a Project -5. Project has 0 to many Meetings; Meeting belongs to a Project +#### Relasi +1. **Project** belongs to a **Customer**; Customer has 0 to many Projects +2. **Project** has 0 to many **Jobs**/Project Items; Feature belongs to a Project +3. **Project** has 0 to many **Invoices**; Invoice belongs to a Project +4. **Project** has 0 to many **Payments**; Payment belongs to a Project +5. **Project** has 0 to many **Meetings**; Meeting belongs to a Project +6. **Project** has 0 to many **Subscriptions**; Subscription belongs to a Project +7. **Project** has 0 to many **Files**; File belongs to a Project -### 2. Job/Item pekerjaan +### 3. Job/Item pekerjaan -1. Job memiliki harga/biaya -2. Job memiliki seorang pekerja/PIC -3. Job memiliki beberapa sub-job -4. Job memiliki beberapa task (semacam checklist pekerjaan) -5. Job memiliki Atribut: +1. **Job** memiliki harga/biaya (misal untuk membayar pekerja) +2. **Job** memiliki seorang **User** sebagai pekerja/penanggung jawab +3. **Job** memiliki beberapa **task** (semacam checklist progress pekerjaan) +4. **Job** memiliki Atribut: - Nama job - Deskripsi - PIC (pekerja/worker) - Biaya/Fee - Prioritas - - tanggal mulai - - tanggal selesai - - tanggal batal -6. Job memiliki beberapa dependency terhadap job lain + - tanggal mulai (TODO) + - tanggal selesai (TODO) + - tanggal batal (TODO) +5. **Job** memiliki beberapa dependency terhadap job lain (TODO) - Misal Job A merupakan dependency dari Job B - Maka Job A harus diselesaikan dulu sebelum job B dikerjakan -7. Progress pengerjaan job dihitung otomatis berdasarkan rata-rata % Progress task -8. Job dapat diurutkan berdasarkan prioritas +6. Progress pengerjaan job dihitung otomatis berdasarkan rata-rata **progress Task** (dalam %) +7. **Job** dapat diurutkan berdasarkan prioritas -### 3. Task +### 4. Task -Task adalah item tugas yang dilakukan oleh PIC/Pekerja untuk memgerjakan 1 job +Task adalah item tugas yang dilakukan oleh PIC/Pekerja untuk mengerjakan 1 job. -1. Task dimiliki oleh sebuah Job/Item pekerjaan -2. Task dapat diurutkan berdasarkan prioritas -3. Task memiliki Atribut : +1. **Task** dimiliki oleh sebuah **Job**/Item pekerjaan +2. **Task** dapat diurutkan berdasarkan prioritas +3. **Task** memiliki Atribut : - Nama Task - Deskripsi - Progress (0 - 100 %) - Prioritas -### 4. Meeting (TODO) +### 5. Pembayaran -Meeting adalah pertemuan yang dilakukan bersama Customer +Adalah pembayaran yang dilakukan dari Customer kepada Agensi (pemasukan), atau Agensi kepada vendor (pengeluaran), atau Agensi kepada pekerja/user (pengeluaran). -1. Meeting dilakukan untuk 1 project -2. Meeting memiliki Berita Acara Pertemuan (BAP) -3. BAP terdiri dari : - - tanggal - - daftar hadir - - agenda - - hasil pertemuan +1. Satu **Project** memiliki beberapa **Pembayaran** +2. **Pembayaran** memiliki 1 Project +3. **Pembayaran** memiliki 1 Invoice (TODO) +4. **Pembayaran** dapat cetak **Kuitansi**/Bukti pembayaran +5. **Pembayaran** memiliki 1 partner berupa : vendor/customer/user (Relasi Morph) +### 6. Vendor -### 5. Invoice (TODO) +Adalah penyedia/supplier/provider yang digunakan oleh Agensi saat ada pengeluaran biaya project. -Invoice adalah tagihan pembayaran yang dibuat oleh Agensi kepada diberikan Customer. +1. **Vendor** memiliki beberapa **pembayaran** + +### 7. Subscription/Langganan -1. Invoice adalah milik sebuah project -2. Invoice memiliki beberapa pembayaran (misal invoice dibayar dicicil) -3. Invoice bisa diupdate status Lunas +Adalah langganan yang dibayar oleh customer secara berkala, yaitu Hosting, Domain dan Maintenance. -### 6. Pembayaran +1. **Subscription** memiliki 1 **project** +2. **Subscription** memiliki 1 **customer** +3. **Subscription** memiliki 1 **vendor** -Adalah pembayaran yang dilakukan dari Customer kepada Agensi (pemasukan), atau Agensi kepada vendor (pengeluaran). +### 7. Laporan Penghasilan -1. Project memiliki beberapa Pembayaran -2. Pembayaran memiliki 1 Project -3. Pembayaran memiliki 1 Invoice (TODO) -4. Pembayaran dapat cetak Kuitansi/Bukti pembayaran -5. Pembayaran memiliki 1 partner berupa : vendor/customer/user +Laporan penghasilan pada Free PMO adalah rekap transaksi pengeluaran dan pemasukan agensi dari project-project yang telah dikerjakan. Halaman ini hanya diakses oleh Admin Agensi. -### 6. Vendor +#### Laporan Tahunan -Adalah penyedia/supplier/provider yang digunakan oleh Agensi saat ada pengeluaran biaya project. +Adalah laporan berupa **grafik profit** dan **tabel detail laporan** berupa : Nama Bulan, Jumlah Transaksi Pembayaran, Jumlah Uang Masuk, Jumlah Uang Keluar dan Profit (selisih pemasukan dan pengeluaran), serta tombol action untuk melihat **Laporan Bulanan**. -1. Vendor memiliki beberapa pembayaran +Pada Laporan Tahunan, Admin Agensi dapat memilih tahun yang ingin dilihat. -### 7. Subscription/Langganan -Adalah langganan yang dibayar oleh customer secara berkala, yaitu hosting dan domain. +#### Laporan Bulanan + +Adalah laporan berupa **grafik profit** dan **tabel detail laporan** berupa : Tanggal, Jumlah Transaksi Pembayaran, Jumlah Uang Masuk, Jumlah Uang Keluar dan Profit (selisih pemasukan dan pengeluaran), serta tombol action untuk melihat **Laporan Harian**. -1. Subscription memiliki 1 project -2. Subscription memiliki 1 customer -3. Subscription memiliki 1 vendor \ No newline at end of file +Pada Laporan Bulanan, Admin Agensi dapat memilih tahun dan bulan yang ingin dilihat. + +#### Laporan Harian + +Laporan Harian adalah tabel **daftar transaksi** pembayaran yang terjadi pada tanggal yang dipilih tersebut. + +### 8. Laporan Piutang + +Laporan ini adalah tabel daftar project dengan pembayaran Customer yang akan diterima oleh Agensi jika project telah selesai dikerjakan. + +### 9. Dashboard Admin Agensi + +Dashboard Admin Agensi berisi : + +1. Statistik jumlah project sesuai dengan statusnya saat ini. +2. Statistik pendapatan : + - Pendapatan total tahun ini + - Jumlah Project selesai tahun ini + - Jumlah pendapatan yang akan datang (akan dibayar oleh Customer) +3. List Langganan Customer yang akan berakhir dalam 60 hari ke depan. + +### 10. Invoice (TODO) + +Invoice adalah tagihan pembayaran yang dibuat oleh Agensi kepada diberikan Customer. + +1. **Invoice** adalah milik sebuah **project** +2. **Invoice** memiliki beberapa **pembayaran** (misal invoice dibayar dicicil) +3. **Invoice** bisa diupdate status Lunas + +### 11. Meeting (TODO) + +Meeting adalah pertemuan yang dilakukan bersama Customer. + +1. **Meeting** dilakukan untuk 1 project +2. **Meeting** memiliki satu Berita Acara Pertemuan (BAP) +3. BAP terdiri dari : + - tanggal + - daftar hadir + - agenda + - hasil pertemuan diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..f37500a --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,78 @@ +# Kontribusi ke Free PMO + +Terima kasih karena telah berkenan mempertimbangkan untuk berkontribusi pada project ini. Mari kita buat software Free PMO menjadi jauh lebih baik. + +### Submit Issue +Project ini masih terus dikembangkan. Sebagian besar fitur yang telah dibuat memiliki **Feature** atau **Unit Testing**, namun sangat mungkin masih ada **bug** yang terlewat dari pengujian tersebut. Jika selama menggunakan software ini Anda temukan **bug** atau **error**, silakan [melaporkan **Issue**](https://github.com/nafiesl/free-pmo/issues/new){:target="_blank"} dengan **prefix Subject : [BUG]**. + +Kita akan mencoba minimalisir **bug** sebisa mungkin. + +> Sebelum submit sebuah issue, ada baiknya Anda mencari pada daftar issue sudah dilaporkan oleh kontributor lain, siapa tahu sudah ada yang melaporkan :) + +### Usulan Fitur Baru +Pada dasarnya Free PMO sudah mencakup fitur-fitur dasar dalam pengelolaan project (terutama dari sudut pandang *freelancer*). Sangat mungkin beberapa fitur ditambahkan pada masa akan datang. Jika Anda memiliki **ide** yang ingin diusulkan dan dituangkan menjadi sebuah fitur pada project ini agar semua dapat menikmatinya, silakan usulkan dengan **submit Issue** dengan **prefix Subject : [PROPOSAL]**. + +Dengan senang hati kita akan diskusikan. + +### Membuat Pull Request + +Wah, bagian ini adalah kontribusi yang luar biasa, Anda sudah berkenan meluangkan waktu dan pikiran untuk membantu banyak orang, terima kasih banyak. Ada beberapa **kategori pull request** yang dapat Anda berikan : + +#### 1. Bugfix + +Di mana Anda membantu dalam **perbaikan error** yang dilaporkan oleh kontributor lain melalui [**Issue**](https://github.com/nafiesl/free-pmo/issues){:target="_blank"}. Jika perbaikan error ini berkaitan dengan interaksi ke database (CRUD Operation), mohon agar Anda : + +1. Membuat **testing**, terkait fitur yang memiliki bug. +2. Pastikan **semua testing passed** pada saat Anda melakukan **pull request**. + +Kita akan review sama-sama terhadap perubahan yang Anda lakukan. Sekedar memastikan tidak ada konflik yang terjadi saat **pull request** ini disetujui. + +#### 2. Kesalahan Penulisan + +Pada project ini sangat mungkin terjadi kesalahan penulisan pada `halaman web` software, bagian `komentar`, `dokumentasi`, maupun pada file `lang` yang banyak kita gunakan pada sistem. Jika Anda menemukan kesalahan itu, silakan lakukan **pull request** untuk kita perbaiki sama-sama. + +#### 3. New Feature + +Jenis **pull request** ini akan menambahkan fitur baru pada Free PMO. Jika Anda ingin melakukan pull request jenis ini, kami harapkan agar memenuhi ketentuan berikut : + +1. Sebelumnya fitur ini sudah diusulkan dan dibahas pada [**Issue**](https://github.com/nafiesl/free-pmo/issues){:target="_blank"}. +2. Fitur tambahan dilengkapi dengan Feature Test atau Unit Test sesuai keperluan (terutama jika ada interaksi perubahan pada database). +3. Semua **testing passed** + +Kita akan **review dan uji** fitur baru tersebut sebelum **pull request** disetujui. + +#### 4. Lang File + +Jenis **pull request** ini akan menambahkan **lang** file pada direktori `resources/lang` sesuai dengan konfigurasi `locale`-nya (misal `lang/en` untuk Bahasa Inggris). Saat ini file-file `lang` yang lengkap hanya pada direktori `locale` `id` untuk Bahasa Indonesia. + +Jika Anda ingin menambahkan bahasa locale lainnya, terutama `locale` `en` (Bahasa Inggris). Silakan melakukan **pull request** untuk kita **review** bersama. + +### Kontribusi Donasi + +Free PMO adalah software management project yang bebas (merdeka) dan gratis. **Pengembang sudah ridho** jika Anda menggunakan dan memodifikasinya untuk tujuan pribadi maupun komersil (sesuai dengan [lisensi](LICENSE)). + +Tetapi jika ada merasa sangat terbantu dengan software ini, dan berniat untuk mendonasikan sebagai rezeki Anda kepada pengembang, silakan mengirimkan donasi melalui jalur berikut : + + +#### Rekening Transfer + +| No. Rekening | BCA // 7820088543 | +| --- | --- | +| Atas nama | **Nafies Luthfi** | +| Kode Transfer | 014 | + +#### atau + +[![Support via PayPal](https://cdn.rawgit.com/twolfson/paypal-github-button/1.0.0/dist/button.svg)](https://www.paypal.me/nafiesl/) + +Terima kasih banyak saya ucapan. + +### Penutup + +Terima kasih atas kontribusinya, semoga menjadi kebaikan untuk semua. + +Salam hangat, + +
+Nafies Luthfi, +Pengembang Free PMO \ No newline at end of file