Terima kasih telah mempertimbangkan untuk berkontribusi ke Open Browser Rendering! Orang-orang seperti Anda yang membuat project ini menjadi tool yang hebat untuk semua orang.
Project ini dan semua orang yang berpartisipasi di dalamnya diatur oleh Kode Etik kami. Dengan berpartisipasi, Anda diharapkan menjunjung tinggi kode ini. Silakan laporkan perilaku yang tidak dapat diterima kepada maintainer project.
- Bersikap hormat - Perlakukan semua orang dengan hormat dan kebaikan
- Berkolaborasi - Bekerja sama dan saling membantu
- Inklusif - Sambut pendatang baru dan perspektif yang beragam
- Profesional - Jaga diskusi tetap fokus dan konstruktif
Sebelum membuat laporan bug, silakan periksa issue yang ada untuk menghindari duplikasi. Saat membuat laporan bug, sertakan sebanyak mungkin detail:
Template Laporan Bug:
**Deskripsikan bug**
Deskripsi yang jelas dan ringkas tentang bug tersebut.
**Cara Mereproduksi**
Langkah-langkah untuk mereproduksi perilaku:
1. Kirim request ke '...'
2. Dengan payload '...'
3. Lihat error
**Perilaku yang diharapkan**
Deskripsi yang jelas tentang apa yang Anda harapkan terjadi.
**Environment:**
- OS: [misalnya Ubuntu 22.04]
- Versi Node.js: [misalnya 18.17.0]
- Versi Docker (jika applicable): [misalnya 24.0.5]
- Browser engine: [misalnya chromium]
**Konteks tambahan**
Tambahkan konteks lain tentang masalah di sini.Saran peningkatan dilacak sebagai GitHub issues. Saat membuat saran peningkatan, sertakan:
Template Enhancement:
**Apakah permintaan fitur Anda terkait dengan masalah?**
Deskripsi yang jelas tentang masalahnya.
**Deskripsikan solusi yang Anda inginkan**
Deskripsi yang jelas tentang apa yang Anda inginkan terjadi.
**Deskripsikan alternatif yang telah Anda pertimbangkan**
Solusi atau fitur alternatif yang telah Anda pertimbangkan.
**Konteks tambahan**
Konteks atau screenshot lain tentang permintaan fitur.- Fork repository dan buat branch Anda dari
main - Buat perubahan Anda mengikuti panduan coding kami
- Test perubahan Anda secara menyeluruh
- Update dokumentasi jika diperlukan
- Submit pull request dengan deskripsi yang jelas
Template Pull Request:
**Deskripsi**
Deskripsi singkat tentang apa yang dilakukan PR ini.
**Jenis perubahan**
- [ ] Bug fix (perubahan non-breaking yang memperbaiki issue)
- [ ] Fitur baru (perubahan non-breaking yang menambahkan fungsionalitas)
- [ ] Breaking change (fix atau fitur yang menyebabkan fungsionalitas yang ada tidak bekerja seperti yang diharapkan)
- [ ] Update dokumentasi
**Bagaimana Ini Ditest?**
Deskripsikan test yang Anda jalankan untuk memverifikasi perubahan Anda.
**Checklist:**
- [ ] Kode saya mengikuti panduan style project ini
- [ ] Saya telah melakukan self-review terhadap kode saya sendiri
- [ ] Saya telah mengomentari kode saya, terutama di area yang sulit dipahami
- [ ] Saya telah membuat perubahan yang sesuai pada dokumentasi
- [ ] Perubahan saya tidak menghasilkan warning baru
- [ ] Saya telah mentest perubahan saya secara lokal- Node.js >= 18.0.0
- npm atau yarn
- Git
# 1. Fork dan clone repository
git clone https://github.com/YOUR_USERNAME/OpenBrowserRendering.git
cd OpenBrowserRendering
# 2. Install dependencies
npm install
# 3. Copy file environment
cp .env.example .env
# 4. Edit .env dengan pengaturan Anda
# Set RENDERER_API_KEY ke nilai test
# 5. Jalankan development server
npm run dev
# 6. Test API
curl http://localhost:3000/healthOpenBrowserRendering/
├── server.js # File server utama
├── package.json # Dependencies dan scripts
├── Dockerfile # Konfigurasi Docker
├── docker-compose.yml # Setup Docker Compose
├── .env.example # Template environment variables
├── README.md # Dokumentasi (English & Indonesian)
├── CONTRIBUTING.md # Versi English
├── CONTRIBUTING.id.md # File ini
└── LICENSE # MIT License
- Gunakan fitur ES6+ (const/let, arrow functions, async/await)
- Gunakan 2 spasi untuk indentasi
- Gunakan single quotes untuk string
- Tambahkan semicolon di akhir statement
- Gunakan nama variabel yang bermakna
- Tambahkan komentar untuk logika yang kompleks
// Baik ✅
async function getBrowser() {
if (browser) return browser;
const engine = (BROWSER_ENGINE || 'chromium').toLowerCase();
// Launch browser berdasarkan engine yang dipilih
if (engine === 'firefox') {
browser = await firefox.launch({
headless: true,
args: ['--no-sandbox']
});
}
return browser;
}
// Buruk ❌
async function getBrowser(){
if(browser) return browser
var engine=(BROWSER_ENGINE||'chromium').toLowerCase()
if(engine==='firefox'){
browser=await firefox.launch({headless:true,args:['--no-sandbox']})
}
return browser
}- Selalu gunakan try-catch untuk operasi async
- Return pesan error yang bermakna
- Log error dengan konteks
try {
const result = await page.screenshot(opts);
return result;
} catch (err) {
console.error('Screenshot error:', err.message);
return c.json({ error: err.message }, 500);
}Ikuti spesifikasi Conventional Commits:
<type>(<scope>): <subject>
<body>
<footer>
feat: Fitur barufix: Perbaikan bugdocs: Perubahan dokumentasistyle: Perubahan style kode (formatting, dll.)refactor: Refactoring kodetest: Menambah atau update testchore: Tugas maintenance
feat(screenshot): tambah dukungan format WebP
Menambahkan dukungan format screenshot WebP dengan kontrol kualitas.
Closes #123
---
fix(pdf): tangani error timeout dengan baik
Meningkatkan error handling untuk timeout generasi PDF.
Menambahkan retry logic untuk network error.
---
docs(readme): update instruksi deployment
Menambahkan panduan deployment VPS yang detail dengan konfigurasi Nginx.Test semua endpoint sebelum submit:
# Health check
curl http://localhost:3000/health
# Screenshot
curl -X POST http://localhost:3000/screenshot \
-H "Authorization: Bearer supersecret123" \
-H "Content-Type: application/json" \
-o test.png \
-d '{"url": "https://example.com"}'
# PDF
curl -X POST http://localhost:3000/pdf \
-H "Authorization: Bearer supersecret123" \
-H "Content-Type: application/json" \
-o test.pdf \
-d '{"url": "https://example.com"}'
# Evaluate
curl -X POST http://localhost:3000/evaluate \
-H "Authorization: Bearer supersecret123" \
-H "Content-Type: application/json" \
-d '{"url": "https://example.com", "script": "document.title"}'# Build dan test Docker image
docker build -t open-browser-rendering-test .
docker run -p 3000:3000 -e RENDERER_API_KEY=test123 open-browser-rendering-test
# Test dengan Docker Compose
docker-compose up --buildKami sangat menyambut kontribusi di area berikut:
- 🧪 Testing - Tambahkan unit test dan integration test
- 📚 Dokumentasi - Perbaiki docs, tambahkan contoh, perbaiki typo
- 🐛 Bug Fixes - Perbaiki issue yang dilaporkan
- ✨ Fitur - Tambahkan opsi atau format rendering baru
- 🔒 Security - Tingkatkan langkah-langkah keamanan
- ⚡ Performance - Optimalkan kecepatan rendering dan penggunaan resource
- 🌐 Internationalization - Tambahkan terjemahan bahasa lainnya
- 🎨 Contoh - Buat contoh implementasi
- 💬 GitHub Discussions
- 🐛 GitHub Issues
- 🌐 DEVMODE Community
- 📧 Email: support@devmode.id
Kontribusi Anda membuat project ini lebih baik untuk semua orang. Kami menghargai waktu dan usaha Anda!
Selamat Berkontribusi! 🚀
Dibuat dengan ❤️ oleh DEVMODE Community