Skip to content

DSC-UNSRI/Gdg-Talent-Hub-Backend-Squad-C

Repository files navigation

👷 Contributing to GDG Talent Hub

Hai, Engineers! 👋

Terima kasih sudah menjadi bagian dari tim pengembang GDG Talent Hub. Dokumen ini adalah panduan resmi (The Law) untuk berkontribusi di repository ini. Tujuannya agar kode kita tetap bersih, konsisten, dan minim konflik—layaknya standar industri profesional.

Mohon baca dokumen ini sampai habis sebelum membuat commit pertama kalian.


🚫 The Golden Rules

  1. Zero Copy-Paste Without Understanding Dilarang keras melakukan copy-paste kode dari ChatGPT/StackOverflow tanpa memahami cara kerjanya. Tech Lead berhak menanyakan logika kode kalian saat sesi Code Defense.

  2. No any Type Kita menggunakan TypeScript Strict Mode. Hindari penggunaan tipe any. Definisikan interface, type, atau DTO yang jelas.

  3. Respect the Architecture Ikuti pola Controller – Service – Repository.

    • Jangan menaruh logic bisnis di Controller.
    • Jangan memanggil database langsung dari Controller.
  4. English First Gunakan Bahasa Inggris untuk nama variabel, fungsi, komentar, dan pesan commit.


🌿 Git Workflow

Kita menggunakan Feature Branch Workflow yang ketat. Dilarang push langsung ke branch main.

1. Sync & Create Branch

Pastikan branch lokal kalian selalu up-to-date dengan main sebelum mulai bekerja.

git checkout main
git pull origin main
git checkout -b type/nama-fitur-kalian

Branch Naming Convention:

  • feat/ → Fitur baru Contoh: feat/register-endpoint, feat/upload-cv

  • fix/ → Perbaikan bug Contoh: fix/login-error, fix/typo-schema

  • chore/ → Konfigurasi / setup Contoh: chore/setup-husky, chore/update-readme

  • refactor/ → Merapikan kode tanpa mengubah fitur Contoh: refactor/auth-service


2. Commit Message

Gunakan standar Conventional Commits. Pesan commit harus jelas dan deskriptif.

✅ Benar:

feat: implement jwt strategies for auth
fix: resolve user profile update error
docs: update API documentation for event

❌ Salah:

update
fix bug
nambahin fitur

3. Push & Pull Request (PR)

Setelah selesai coding, push branch kalian ke GitHub:

git push origin feat/nama-fitur-kalian

Lalu buat Pull Request ke branch main dengan ketentuan:

  • Title: Sama dengan pesan commit utama
  • Description: Jelaskan apa yang kalian kerjakan
  • Reviewers: Tag Tech Lead atau minimal satu anggota Squad

💻 Coding Standards

Structure Pattern

Setiap membuat fitur baru, pastikan mengikuti urutan struktur berikut:

  1. Schema (src/schemas/) Buat validasi menggunakan Zod terlebih dahulu.

  2. Route (src/routes/) Tentukan endpoint URL.

  3. Controller (src/controllers/) Terima request, lakukan validasi, dan panggil service.

  4. Service (src/services/) Seluruh logic bisnis utama ditulis di sini.

  5. Repository (src/repositories/) (Opsional) Digunakan jika query database kompleks.


Error Handling

JANGAN menggunakan try-catch manual di dalam Controller. Gunakan catchAsync wrapper yang sudah disediakan.

✅ DO:

export const login = catchAsync(async (req, res) => {
  const data = await AuthService.login(req.body);
  sendResponse(res, 200, data);
});

❌ DON'T:

export const login = async (req, res) => {
  try {
    // logic...
  } catch (error) {
    res.status(500).json(...);
  }
};

🗄️ Database & Prisma

Karena kita bekerja dalam tim, perubahan database adalah hal yang sangat sensitif.

  • Jangan mengedit tabel milik Squad lain tanpa diskusi terlebih dahulu. Contoh: Squad A (Auth) dilarang menyentuh tabel Event (Squad B) tanpa koordinasi.

Schema Changes

Jika kalian mengubah prisma/schema.prisma, jalankan perintah berikut sebelum melakukan push:

npx prisma format

Pastikan file schema.prisma ikut ter-commit.

Migration

Jangan melakukan migration manual yang berpotensi merusak data tim lain.

Untuk fase development awal, gunakan:

npx prisma db push

✅ Pull Request Checklist

Sebelum submit PR, pastikan semua poin berikut terpenuhi:

  • Kode sudah rapi (tidak ada error Prettier / ESLint)
  • Tidak ada console.log sampah (gunakan Logger/Winston)
  • Endpoint sudah dites di Postman dan berhasil (Screenshot di deskripsi PR sangat disarankan)
  • Variable environment baru (.env) sudah dicatat (jika ada)
  • Tidak ada konflik dengan branch main

🎉 Happy Coding! Let’s build something awesome together! 🚀

About

No description, website, or topics provided.

Resources

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors