Contributing Guide
Panduan lengkap untuk berkontribusi pada TaskFi. Dari setup development hingga submit pull request, semua ada di sini.
Buka RepositoryDaftar Isi
Sebelum Memulai
Aturan Perilaku
Semua kontributor diharapkan mengikuti Code of Conduct kami. Jaga suasana kolaboratif yang positif dan saling menghormati.
Tipe Kontribusi
Tips
Sebelum mulai coding, diskusikan dulu di Telegram Community atau GitHub Discussions untuk memastikan kontribusi Anda selaras dengan roadmap.
Prasyarat & Setup Lokal
Tooling yang Dibutuhkan
Perintah Setup
git clone REPO_URL
cd taskfi
pnpm i
cp .env.example .env # isi SUPABASE_URL & SUPABASE_ANON_KEY
pnpm dev # expo start
Arsitektur Singkat
Workflow Git
Branching Strategy
feat/<nama-fitur>
fix/<bug>
chore/*
docs/*
Commit Style (Conventional Commits)
feat(ocr): extract merchant/date/total from receipt
fix(transactions): handle end-of-month date filter
Sinkronisasi
git fetch origin
git rebase origin/main
Menulis Kode
✅ Yang Harus Dilakukan
- Gunakan ESLint + Prettier (pnpm lint:fix)
- Prioritaskan hooks > komponen
- Ketat terhadap tipe & error handling
- Tulis test untuk utility functions
❌ Yang Harus Dihindari
- Business logic di komponen UI
- Commit secrets atau API keys
- Hardcode values tanpa constants
- Skip error handling di async ops
Perhatian
Jangan pernah commit file .env atau secrets lainnya. Gunakan .env.example sebagai template.
Menjalankan Lint & Test
Perintah Lint & Test
pnpm lint
pnpm test
Checklist Sebelum PR
Issue & Pull Request
📝 Issue
- • Buka Issue dulu sebelum coding
- • Gunakan template Bug/Feature
- • Sertakan reproduksi steps
- • Label yang sesuai
🔄 Pull Request
- • Link Issue dengan "Closes #123"
- • Template PR ringkas
- • Sertakan screenshot/console log
- • Review process cepat
Template PR
## What
- Implement OCR feature for receipt scanning
## Why
Closes #401
## Screenshots/Videos
[Attach demo]
## Testing
- [ ] Tested on Android
- [ ] Tested on iOS
Panduan Fitur Utama
Contoh Automation Rule
IF merchant.includes("Starbucks") THEN category = "Food & Drinks"
FAQ Kontributor
Error Supabase key?
Cek file .env dan pastikan SUPABASE_URL & SUPABASE_ANON_KEY sudah diisi dengan benar dari project settings Supabase.
Cache tidak segar?
Invalidasi React Query cache melalui utils/queryClient.ts atau restart development server.
Realtime tidak jalan?
Pastikan channel subscription ke public:todos dan public:transactions sudah benar di Supabase settings.