Skip to content

Berkontribusi ke LensCore

Terima kasih atas ketertarikan Anda untuk berkontribusi ke LensCore! Kami menyambut kontribusi dari semua orang. Panduan ini akan membantu Anda memulai berkontribusi ke proyek ini.

Cara Berkontribusi

  • Laporkan bug dan masalah
  • Usulkan fitur atau peningkatan baru
  • Perbaiki dokumentasi
  • Tulis test
  • Kirim perubahan kode
  • Review pull request
  • Bantu pengguna lain dalam diskusi

Memulai

1. Fork Repository

Mulai dengan melakukan fork repository di GitHub:

bash
# Fork di GitHub, lalu clone fork Anda
git clone https://github.com/USERNAME_ANDA/LensCore.git
cd LensCore

2. Setup Environment Development

bash
# Install dependencies
make install

# Copy file environment
cp env.example .env

# Jalankan development server
make dev

3. Buat Branch

Buat branch baru untuk fitur atau bugfix Anda:

bash
git checkout -b feature/nama-fitur-anda
# atau
git checkout -b fix/nama-bugfix-anda

Alur Kerja Development

Menjalankan Test

bash
# Jalankan semua test
make test

# Jalankan test dalam mode watch
npm run test:watch

# Jalankan file test tertentu
npm test -- path/to/test.ts

Linting & Formatting

bash
# Jalankan linter
make lint

# Perbaiki masalah linting
make lint:fix

# Format kode
make format

Type Checking

bash
# Jalankan TypeScript type checking
make typecheck

Panduan Kontribusi

Gaya Kode

  • Ikuti gaya kode dan konvensi yang ada
  • Gunakan TypeScript dengan strict type checking
  • Tulis kode yang jelas dan self-documenting
  • Tambahkan komentar untuk logika yang kompleks
  • Gunakan nama variabel dan fungsi yang bermakna

Testing

  • Tulis test untuk fitur baru
  • Pastikan test yang ada tetap pass
  • Targetkan code coverage yang tinggi
  • Test edge case dan skenario error

Aksesibilitas

  • Ikuti panduan WCAG 2.1
  • Pastikan navigasi keyboard berfungsi
  • Sediakan ARIA label yang tepat
  • Test dengan screen reader
  • Jaga kontras warna yang cukup

Dokumentasi

  • Update dokumentasi yang relevan
  • Tambahkan JSDoc comment ke fungsi
  • Update README jika diperlukan
  • Dokumentasikan breaking changes

Submit Pull Request

Sebelum Submit

  1. Pastikan semua test pass dan kode sudah di-lint
  2. Update dokumentasi jika diperlukan
  3. Tambah atau update test untuk perubahan Anda
  4. Commit perubahan dengan pesan yang jelas
  5. Push ke fork Anda dan buat pull request

Format Pesan Commit

Gunakan pesan commit yang jelas dan deskriptif:

bash
feat: tambah rule aksesibilitas baru untuk kontras warna
fix: perbaiki masalah crawling halaman nested
docs: update dokumentasi API untuk endpoint baru
test: tambah unit test untuk service aksesibilitas
refactor: tingkatkan struktur kode di AI processor

Template Pull Request

Sertakan hal berikut dalam deskripsi PR Anda:

  • Deskripsi: Apa yang dilakukan PR ini?
  • Issue Terkait: Link ke issue yang terkait
  • Jenis Perubahan: Bug fix, feature, dokumentasi, dll
  • Testing: Bagaimana ini ditest?
  • Screenshot: Jika ada
  • Checklist: Test pass, docs updated, dll

Kode Etik

Kami berkomitmen untuk menyediakan lingkungan yang ramah dan inklusif. Harap bersikap hormat dan perhatian dalam interaksi Anda dengan kontributor lain. Kami mengharapkan semua kontributor mengikuti Kode Etik kami.

Standar Kami

  • Bersikap hormat dan inklusif
  • Sambut pendatang baru
  • Terima kritik konstruktif dengan lapang dada
  • Fokus pada apa yang terbaik untuk komunitas
  • Tunjukkan empati terhadap anggota komunitas lainnya

Detail Setup Development

Prasyarat

  • Node.js >= 20.0.0
  • Docker dan Docker Compose
  • Git
  • npm atau yarn

Struktur Project

LensCore/
├── src/               # Source code
│   ├── api/          # API routes dan handlers
│   ├── cli/          # CLI commands dan services
│   ├── services/     # Core services
│   ├── types/        # TypeScript types
│   └── utils/        # Utility functions
├── tests/            # File test
├── docs/             # Dokumentasi (VitePress)
├── pages/            # Legacy HTML pages
└── dist/             # Compiled output

Perintah yang Tersedia

bash
# Development
make dev              # Start development server
make build            # Build TypeScript
make start            # Start production server

# Testing
make test             # Jalankan tests
make test:coverage    # Jalankan tests dengan coverage
make test:watch       # Jalankan tests dalam mode watch

# Quality
make lint             # Jalankan linter
make lint:fix         # Perbaiki masalah linting
make format           # Format code
make typecheck        # Type checking

# Docker
make docker-build     # Build Docker image
make docker-up        # Start Docker containers
make docker-down      # Stop Docker containers

Panduan Issue

Melaporkan Bug

Ketika melaporkan bug, sertakan:

  1. Deskripsi: Deskripsi jelas dari bug
  2. Langkah untuk Reproduce: Langkah bernomor untuk reproduce
  3. Perilaku yang Diharapkan: Apa yang Anda harapkan terjadi
  4. Perilaku Aktual: Apa yang sebenarnya terjadi
  5. Environment: OS, versi Node, browser, dll
  6. Screenshot: Jika ada
  7. Logs: Log error yang relevan

Menyarankan Fitur

Ketika menyarankan fitur, sertakan:

  1. Masalah: Masalah apa yang diselesaikan ini?
  2. Solusi yang Diusulkan: Pendekatan yang Anda sarankan
  3. Alternatif: Solusi lain yang Anda pertimbangkan
  4. Konteks Tambahan: Screenshot, contoh, dll

Proses Review

  1. Submission: Anda submit pull request
  2. Automated Checks: CI menjalankan tests dan linting
  3. Code Review: Maintainer review kode Anda
  4. Feedback: Anda address komentar review
  5. Approval: Maintainer approve dan merge

Mendapatkan Bantuan

Jika Anda memiliki pertanyaan tentang kontribusi:

  • Buka issue di GitHub
  • Bergabung dengan diskusi komunitas kami
  • Hubungi maintainer

Pengakuan

Kontributor diakui di:

  • Daftar kontributor GitHub
  • Release notes
  • Project README
  • Kredit dokumentasi

Lisensi

Dengan berkontribusi ke LensCore, Anda setuju bahwa kontribusi Anda akan dilisensikan di bawah Lisensi MIT.


Terima kasih telah berkontribusi ke LensCore! Upaya Anda membantu membuat testing aksesibilitas lebih baik untuk semua orang. 🎉

Released under the MIT License.