This page was machine-translated. Spotted a mistake?Help improve it.
Skip to content

Berkontribusi

Terima kasih atas minat Anda untuk berkontribusi. Panduan ini menjelaskan cara berpartisipasi, apa yang kami terima, dan cara memulai.

Cara berkontribusi

Issue (tanpa penyiapan)

  • Laporan bug - Ada yang rusak? Buka laporan bug dengan langkah-langkah reproduksi.
  • Permintaan fitur - Punya ide? Mulai sebuah diskusi agar komunitas dapat menimbang dan mendukungnya.
  • Masalah terjemahan - Menemukan terjemahan yang salah atau hilang? Buka issue terjemahan.
  • Masalah dokumentasi - Ada yang keliru di dokumentasi? Buka issue dokumentasi.

Kode (memerlukan CLA)

Kami menerima pull request untuk:

TipeProses
Perbaikan bugBuka PR langsung (tautkan issue jika ada)
Terjemahan baruBuka PR langsung (lihat Panduan Terjemahan)
Peningkatan dokumentasiBuka PR langsung
Peningkatan cakupan tesBuka PR langsung
Tool atau fitur baruMulai sebuah diskusi terlebih dahulu; seorang maintainer mengubah ide yang disetujui menjadi issue yang dilacak sebelum Anda menulis kode
Refaktor atau perubahan arsitekturMulai sebuah diskusi terlebih dahulu dan tunggu persetujuan maintainer sebelum menulis kode

Apa yang tidak akan kami terima

  • Perubahan pada alur kerja CI/CD, konfigurasi rilis, atau konfigurasi linter/compiler
  • PR tanpa Contributor License Agreement yang ditandatangani
  • PR dengan lebih dari 400 baris perubahan (pecah pekerjaan besar menjadi PR yang lebih kecil)
  • Fitur yang tidak didiskusikan dan disetujui terlebih dahulu
  • Perubahan pada packages/ai/ tanpa diskusi sebelumnya

Contributor License Agreement

Sebelum kami dapat menggabungkan PR pertama Anda, Anda harus menandatangani Individual CLA kami. Ini adalah persyaratan satu kali.

Mengapa: SnapOtter berlisensi ganda (AGPLv3 + komersial). CLA memberi kami hak untuk mendistribusikan kontribusi Anda di bawah kedua lisensi tersebut. Anda tetap memegang penuh hak cipta atas karya Anda.

Bagaimana: Ketika Anda membuka PR pertama, bot CLA Assistant akan berkomentar dengan sebuah tautan. Klik tautan itu, tinjau perjanjiannya, dan tanda tangani dengan akun GitHub Anda. Hanya butuh 30 detik.

Jika Anda berkontribusi atas nama pemberi kerja Anda dan pemberi kerja Anda memegang hak kekayaan intelektual atas karya Anda, hubungi [email protected] untuk mengatur Corporate CLA sebelum mengirimkan.

Memulai

Prasyarat

  • Node.js 22+
  • pnpm 9+
  • Python 3.11+ (hanya untuk tool AI)
  • Docker (opsional, untuk pengujian integrasi penuh)

Penyiapan

bash
# Fork and clone
git clone https://github.com/<your-username>/snapotter.git
cd snapotter

# Start Postgres + Redis for local dev
docker compose -f docker-compose.dev.yml up -d

# Install dependencies
pnpm install

# Start dev servers (web on :1349, API on :13490)
pnpm dev

Menjalankan pemeriksaan

Sebelum mengirimkan PR, pastikan semua pemeriksaan lolos secara lokal:

bash
pnpm lint          # Biome lint + format check
pnpm typecheck     # TypeScript across monorepo
pnpm test          # Vitest unit + integration tests

Proses pull request

  1. Fork repo dan buat branch dari main (feat/my-feature atau fix/issue-123)
  2. Lakukan perubahan Anda dalam commit yang terfokus dan dapat ditinjau menggunakan conventional commits
  3. Tambahkan atau perbarui tes untuk perubahan Anda
  4. Jalankan pnpm lint && pnpm typecheck && pnpm test secara lokal
  5. Buka PR terhadap main dan isi templatnya
  6. Tanda tangani CLA jika diminta
  7. Tunggu CI lolos dan seorang maintainer meninjau

Ekspektasi peninjauan

  • Kami berupaya menanggapi PR dalam 7 hari
  • PR yang kecil dan terfokus ditinjau lebih cepat
  • Jika Anda belum mendapat kabar dalam 7 hari, tinggalkan komentar untuk mengingatkan thread
  • Kami mungkin meminta perubahan, menyarankan pendekatan yang berbeda, atau menutup PR jika tidak selaras dengan arah proyek

Setelah PR Anda digabungkan

Kontribusi Anda akan disertakan dalam rilis berikutnya dan dicantumkan dalam changelog.

Good first issue

Mencari sesuatu untuk dikerjakan? Lihat good first issues kami untuk tugas yang ramah pemula, atau help wanted untuk item yang lebih besar tempat kami menghargai bantuan komunitas.

Gaya kode

  • Biome menangani pemformatan dan linting (tanda kutip ganda, titik koma, indentasi 2 spasi)
  • Hook pra-commit menjalankan biome check --write pada file yang di-stage secara otomatis
  • Jika linter mengeluh, perbaiki kodenya (jangan ubah konfigurasi Biome)
  • ES module di mana-mana (import/export)
  • Conventional commits: feat:, fix:, refactor:, docs:, test:, chore:

Untuk detail arsitektur lengkap, lihat Panduan Developer.

Keamanan

Jangan buka PR atau issue publik untuk kerentanan keamanan. Laporkan secara privat melalui GitHub Security Advisories atau email [email protected]. Lihat SECURITY.md untuk detail lengkap.

Ada pertanyaan?