PocketFi! Get the app →
Contribute

PRs welcome. Especially small ones.

PocketFi is built in the open, by humans, on weekends. Here’s how to help — whether that’s a typo fix, a brand-new feature, or just telling us your favorite category icon needs a re-draw.

5-min quickstart

Get it running locally.

# 1. Clone
git clone https://github.com/boonyongyang/pocketfi
cd pocketfi

# 2. Install
flutter pub get

# 3. Firebase emulators
firebase emulators:start
  # Firestore, Auth & Storage on localhost

# 4. Run
flutter run -d android
  # or: flutter run -d ios (beta)

# 5. Optional: seed test data
make seed
  # 3 wallets, ~80 transactions, 1 shared
flutter_dash
Flutter 3.22+
We track the latest stable. Use FVM if you juggle versions.
cloud
Firebase CLI
For local emulators. No real Firebase project needed for development.
android
Android Studio or VS Code
With Dart + Flutter extensions. Both are tested in CI.
devices
A device or emulator
Receipt OCR needs a real device camera; everything else runs in emulator.
Pick something off the pile

Good first issues.

open_in_new See all on GitHub
#124
Add empty-state illustration to first-run Timeline
UI
low
#118
Persist last-used wallet on the Add Transaction sheet
UX
low
#102
Support comma as decimal separator (BM locale)
i18n
med
#089
Recurring transactions — yearly recurrence
Feature
med
#076
CSV importer — Money Lover dialect
Feature
high
#054
Replace go_router with beamer everywhere
Refactor
high
The repo, at a glance

Where to find things.

lib/src/features/transactions
Add-transaction flow, Timeline tab, recurring engine.
lib/src/features/wallets
Personal wallets, shared wallets, contribution math.
lib/src/features/overview
Donut chart, category ranking, budgets, goals.
lib/src/features/receipts
ML Kit pipeline, field detection, image attachment.
lib/src/features/bills
Bills tracker, paid/unpaid/overdue states.
lib/src/constants
app_colors.dart, app_icons.dart, strings.dart — start here.
lib/src/routing
Bottom nav + screen routing.
firestore.rules
Per-user + shared-wallet access rules. Audit anytime.
How we like PRs

Four small rules.

Rule 1
Small PRs win.
A 30-line PR with one concern gets merged. A 900-line PR with five concerns starts a year-long thread.
Rule 2
Tests before features.
New behavior needs a widget or unit test that fails before your change and passes after. We rarely budge on this.
Rule 3
Match the visual system.
Navy/yellow palette, navy app bar, F9F9F9 backgrounds. New screens should look like they belong.
Rule 4
No telemetry without a flag.
Anything that talks to the network is off by default and gated by a setting. Privacy is the product.
Not a coder?

You can still help.

rate_review
Leave a Play Store review
It’s the single highest-ROI thing for a small OSS app.
bug_report
File good bug reports
Repro steps + Android version + screenshot = magic.
translate
Translate strings
BM, Tamil, Mandarin all need a hand. ~600 strings.
palette
Redraw category icons
A few of the 17 could use a designer’s eye. PRs in SVG.

Found a thing? Open an issue.

Or jump straight to a PR. We don’t bite. Sometimes we sigh, but we don’t bite.

Open an issue Read CONTRIBUTING.md