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:
| Tab | Contents |
|---|---|
| Dashboard | KPIs, revenue/expense summary, quick actions |
| Invoices | Invoice list, detail, creation |
| Parties | Customer/vendor list, detail, creation |
| Inventory | Stock item list |
| More | All 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-printfor PDF rendering - Share via
expo-sharing(WhatsApp, email, any share target) - Same invoice layout as the web app's print output
Technical Details
| Aspect | Technology |
|---|---|
| Framework | Expo SDK 52+ (managed workflow) |
| Language | TypeScript |
| Routing | Expo Router (file-based) |
| Styling | NativeWind v4 (Tailwind CSS syntax) |
| State | TanStack React Query v5 + Zustand |
| Auth storage | expo-secure-store (encrypted keychain) |
| API | Same REST API as web (sallyerp.in/api) |
| Bundle ID | in.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