Copied to clipboard!
Open Source — MIT

Contributing Guide

Panduan lengkap untuk berkontribusi pada TaskFi. Dari setup development hingga submit pull request, semua ada di sini.

Buka Repository

Sebelum Memulai

Aturan Perilaku

Semua kontributor diharapkan mengikuti Code of Conduct kami. Jaga suasana kolaboratif yang positif dan saling menghormati.

Tipe Kontribusi

Bug fixes
New features
Documentation
Performance

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

Node 18+
pnpm
Expo CLI
Git

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

Expo React Native dengan expo-router untuk navigasi
Supabase Auth & Realtime untuk todos dan transactions
React Query offline-first dengan AsyncStorage cache
Layer struktur: /features/* (api, hooks, ui), /app/* (tabs), /utils/queryClient.ts

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

Receipt Scan (OCR)

Extract merchant, date, dan total dari foto struk

Issue #401 →

Chat Bot Integration

Webhook Telegram/WhatsApp untuk input cepat

Issue #3 →

Automation Rules

IF-THEN rules untuk auto-kategorisasi

Issue #4 →

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.