Skip to main content

Developer overview

Set up the Flutter workspace and understand Salli's local-first engineering boundaries.

Salli is a Flutter application with a Kotlin Android capture layer and a local-first data architecture. The repository does not require a backend to run the product.

Requirements

  • Flutter with Dart >=3.4.0 <4.0.0
  • Android SDK for Android builds
  • Xcode and CocoaPods for iOS builds
  • A physical device for production-like SMS or receipt validation

Run

cd salli_app
flutter pub get
flutter analyze --no-fatal-infos
flutter test
dart run tool/sms_pilot_report.dart
flutter run

Repository map

docs/ internal product and engineering records
documentation/ public Mintlify user and developer guide
salli_app/
lib/core/ exact money and wallet-currency primitives
lib/domain/ entities and deterministic use cases
lib/data/ encrypted store, SMS, OCR, rules, reminders
lib/application/ Riverpod state and serialized write-through
lib/presentation/ screens, sheets, widgets, and Ledger theme
lib/l10n/ English, Sinhala, and Tamil ARB sources
assets/ parser, corpus, classifier, icons, bank marks
test/ unit, widget, data, parser, and contract tests
tool/ SMS pilot and classifier tooling

Non-negotiable invariants

  1. Money is integer minor units end to end.
  2. A false-positive SMS transaction is a release blocker.
  3. Financial state remains useful without network access or an account.
  4. Manual entry remains complete when SMS permission is absent.
  5. Raw financial content does not enter logs, analytics, or support packages.
  6. User-visible calculations must expose their evidence or formula.

Current version

  • App version: 0.1.2+5
  • Database schema: 28
  • Public documentation domain: docs.prabhavalabs.com