Repository Guidelines - dedyirama-id/utbk-core GitHub Wiki

Project Structure

Repository project disusun dalam bentuk monorepo dengan menggunakan lerna sebagai alat manajemen repository. Struktur repository kurang lebih akan tampak seperti berikut:

project                    // parent folder, repository.
├── packages               // container folder for sub-project
   ├── backend
   ├── frontend
      ├── landing-page
      ├── dashboard
   ├── database         
   └── design-system
├── package.json
└── lerna.json            // lerna configuration file for monorepo management

Setiap aplikasi turunan seperti web service (aplikasi server), landing-page, dashboard, dan berbagai aplikasi lain yang akan berkembang di masa depan disebut sebagai packages atau sub-project.

Setiap sub-project diletakkan didalam folder packages dari folder induk (parent folder). Sub-project dikelompokkan berdasarkan kategorinya, misalnya sub-project landing-page termasuk kategori front-end sehingga diletakkan didalam folder front-end.

Semua sub-project tergabung kedalam satu git yang terhubung ke dalam satu repository. Namun, setiap sub-project memiliki dependency packagenya sendiri-sendiri yang dikonfigurasi dalam file package.json.

Versioning

Monorepo project akan dikelola menggunakan Lerna, dengan menggunakan independent versioning. Setiap sub-project memiliki nomor versinya tersendiri. Penomoran versi menggunakan semantic versioning (SemVer).

SemVer: <major>.<minor>.<patch>
Contoh: 1.0.3

Tag dan penamaan versi menggunakan prefix v. (contoh: realase/v1.0.0)

Format Dasar

  • MAJOR: Increment jika ada perubahan besar yang tidak kompatibel dengan versi sebelumnya.
  • MINOR: Increment jika ada penambahan fungsionalitas yang tetap kompatibel dengan versi sebelumnya.
  • PATCH: Increment jika ada perbaikan bug yang tetap kompatibel dengan versi sebelumnya.

Branch

Selama pengembangan aplikasi, developer menggunakan VCS (Version Control Sistem) berupa git yang diintegrasikan dengan github repositories. Dalam penggunaan VCS terdapat beberapa branch (cabang) yang dapat digunakan.

main                                         // branch utama, tempat menyimpan kode rilis terbaru
├── realase/x.x.x                            // branch penanda dan riwayat versi aplikasi
├── develop                                  // branch utama untuk menampung sub-branch development
   ├── feature/<pid>/<feature-name>
│   ├── bugfix/<pid>/<bug-name>
│   ├── fix/<pid>/<bug-name>
│   └── uiux/<pid>/<operation>
└── hotfix/<pid>/<bug-name>                 // branch untuk perbaikan bug secara cepat pada branch main

<pid> : Package ID - didapatkan pada halaman Tasks, ditulis dengan lowercase. Apabila task tidak memiliki pid hapus tag pid bugfix/<bug-name>.

Detail

main (protected)

Branch utama yang digunakan untuk menyimpan kode rilis terbaru dari aplikasi. Semua perubahan yang siap untuk dirilis ke produksi akan di-merge ke branch ini melalui pull request. Branch ini merupakan representasi dari versi stabil dan terkini dari aplikasi.

realase/x.x.x

Branch yang digunakan untuk menandai dan mencatat versi aplikasi yang telah dirilis. Setiap kali ada versi baru yang dirilis, branch ini dibuat untuk mencerminkan keadaan kode pada saat rilis tersebut. Penamaan "x.x.x" mengikuti skema versi semantik (semantic versioning).

develop (protected)

Branch utama yang menampung semua sub-branch pengembangan. Branch ini adalah tempat utama untuk mengintegrasikan fitur-fitur baru, perbaikan bug, dan perubahan lainnya sebelum siap dipindahkan ke branch main.

  • feature/<pid>/<feature-name>

    Branch yang digunakan untuk mengembangkan fitur baru. Setiap fitur baru akan dikembangkan dalam branch ini dengan nama fitur yang jelas untuk memudahkan identifikasi.

  • bugfix/<pid>/<bug-name>

    Branch yang digunakan untuk memperbaiki bug. Setiap perbaikan bug akan dikerjakan dalam branch ini dengan nama bug yang jelas untuk memudahkan pelacakan.

  • fix/<pid>/<fix-name>

    Branch yang digunakan untuk memperbaiki kode yang bukan bagian dari branch bugs.

  • uiux/<pid>/<operation>

    Branch yang digunakan untuk perubahan pada aspek antarmuka pengguna (UI) dan pengalaman pengguna (UX) yang dilakukan oleh UI/UX Designer. Operasi seperti penambahan dan pengeditan file ikon, gambar, ilustrasi, animasi, video, dll dilakukan pada branch ini.

hotfix/<pid>/<bug-name>

Branch yang digunakan untuk perbaikan bug secara cepat apabila ditemukan bug pada kode yang terlanjur dirilis yaitu pada branch main. Branch ini digunakan ketika ada bug kritis yang perlu diperbaiki segera di branch main tanpa harus melalui proses pengembangan di branch develop.

Pull Request

Beberapa branch diproteksi dengan beberapa aturan agar tidak sembarangan diubah. Salah satunya dengan aturan Pull Request Only, artinya untuk menggabungkan branch hanya bisa dilakukan melalui Pull Request (PR).

What you need to know next!

⚠️ **GitHub.com Fallback** ⚠️