Mobile App

Sally ERP on Android & iOS — create invoices, manage parties, record vouchers, and view reports from your phone. Built with Expo/React Native, sharing the same backend API as the web app.

Authentication

Login

  • Email + password login (same credentials as the web app)
  • 30-day JWT token stored securely in the device keychain (iOS Keychain / Android EncryptedSharedPreferences)
  • Token refreshes silently on app launch — no re-login unless truly expired

Biometric Login

  • Enable Face ID / Fingerprint from the app settings
  • On app launch, biometric prompt gates access to the stored token
  • If biometric fails, you can fall back to full password login
  • Biometrics protect access to the token, not the token itself

Company Selection

If you're a member of multiple companies, switch between them from the More → Company Select screen. The active company ID is sent with every API request.

Navigation

The app uses a bottom tab navigator with 5 primary tabs:

TabContents
DashboardKPIs, revenue/expense summary, quick actions
InvoicesInvoice list, detail, creation
PartiesCustomer/vendor list, detail, creation
InventoryStock item list
MoreAll other features: vouchers, ledgers, reports, quotations, purchase orders, GRN, approvals, settings

The More tab organizes features into categories: Accounting, Sales Cycle, Purchase Cycle, Operations, Admin.

Key Features

Invoice Creation

Full invoice creation with party selection, line items (stock item picker), GST calculation, and submission. Same validation and numbering as the web app.

Party Management

Create and view customers/vendors. Search, filter by type, view transaction history and outstanding balance.

Voucher Entry

Record payment, receipt, journal, and contra vouchers with ledger autocomplete and balance validation.

Reports

View report categories and navigate to individual reports. Report rendering is optimized for mobile screens.

Approvals

View and act on pending approval requests. Approve or reject documents on the go.

Offline Support

  • Cached data — All fetched data is persisted to device storage via TanStack Query + AsyncStorage. Survives app restarts.
  • 24-hour GC — Cached data stays fresh for 24 hours before requiring a network refresh.
  • Offline-first — Shows cached data immediately, fetches updates in the background when online.
  • Offline banner — A visual indicator appears when the device loses connectivity.

Push Notifications

Receive notifications for:

  • Documents pending your approval
  • Payments received
  • Overdue invoice reminders

Push token is registered with the server on login. Notifications use Expo's push notification service.

PDF Generation

Generate and share invoice PDFs directly from the mobile app:

  • Uses expo-print for PDF rendering
  • Share via expo-sharing (WhatsApp, email, any share target)
  • Same invoice layout as the web app's print output

Technical Details

AspectTechnology
FrameworkExpo SDK 52+ (managed workflow)
LanguageTypeScript
RoutingExpo Router (file-based)
StylingNativeWind v4 (Tailwind CSS syntax)
StateTanStack React Query v5 + Zustand
Auth storageexpo-secure-store (encrypted keychain)
APISame REST API as web (sallyerp.in/api)
Bundle IDin.sallyerp.mobile

Settings

  • Biometric toggle — Enable/disable Face ID or fingerprint
  • Theme — Light, dark, or system default
  • Company switch — Select active company
  • Logout — Clears token and returns to login screen