CreatorAppAvailable

Expense log app (Tallybook)

Local-first personal expense log for iOS and Android: keypad capture in integer minor units, categories with monthly budgets, month overview with accessible chart and table, correction history, recurring expenses, search/filters and CSV export. No bank connections.

Get Creator

Creator ($9 a month) includes up to 20 new premium families a billing month (5 in any 24 hours). Already a member? Open your library.

Version
1.0.2
Platforms
iOS, Android
Framework
expo
Archive
1.9 MB 128 files

What it does

  • log expense with amount keypad
  • categorize and budget monthly
  • review month by category
  • correct an entry with history
  • delete with undo and restore
  • recurring expenses
  • search and filter by date range and category
  • export CSV via share sheet
  • persist across restarts

Screens

  • ledgerMonth total vs budget, search, filters, date-grouped history
  • expense-detailExpense detail with correction history, duplicate, delete
  • composeKeypad-first create/edit with validation and unsaved-changes guard
  • filterDate range presets/custom range and categories with live count
  • overviewSpend by category vs budget as bars or data table
  • settingsCurrency, appearance, export, sample data, erase
  • categoriesCategories and budgets list
  • category-editName, budget, icon, colour, archive, delete
  • recurringRecurring rules with next date
  • rule-editWeekly/monthly rule editor, pause, delete
  • deletedRecently deleted with restore/empty
  • eraseTyped-confirmation erase of all data

States covered

  • Loading
  • Empty
  • No results
  • Error
  • Validation
  • Destructive confirm
  • Undo
  • First run
  • Deleted elsewhere

Stack and versions

expo57.0.25
expo-router57.0.23
react19.2.3
react-native0.86.3
typescript6.0.3
expo-sqlite57.0.3
jest29.7.0
jest-expo57.0.5
@testing-library/react-native14.0.1

Commands:

installnpm ci
devnpx expo start
testnpm test
typechecknpx tsc --noEmit
buildnpx expo prebuild && npx expo run:ios | npx expo run:android (or EAS Build)
e2enone automated; native script in docs/VERIFICATION.md
web_previewnpx expo export -p web --output-dir dist && node scripts/preview-screenshots.mjs

Tested

CheckPlatformToolResultDate
dependency pins for Expo SDK 57 native modules (react-native-reanimated 4.5.1, react-native-worklets 0.10.1, react-native-gesture-handler 2.32): expo install --check, npm audit 0, jest, tsc, expo-doctor, Metro iOS + Android bundlesNodenpm 11 + expo install --checkPass2026-09-26
unit + screen tests (40)Nodejest 29.7.0 + jest-expo 57.0.5 + @testing-library/react-native 14.0.1Pass2026-09-26
typecheckNodetypescript 6.0.3 (tsc --noEmit)Pass2026-09-26
expo-doctorNodeexpo-doctor 1.20.4Pass2026-09-26
native project generation (expo prebuild --no-install)Nodeexpo 57.0.25 prebuildPass2026-09-26
web export preview screenshots (not native verification)Web appexpo export -p web + Playwright 1.56 ChromiumPass2026-09-26
fresh-copy reproduction (npm ci, npm test, tsc)Nodenpm 10.9.7 / node 22.22.2, cold Jest cachePass2026-09-26
Release build of this archive: install, launch, relaunch, dark mode; no crash reportsiOSiOS Simulator (iPhone 17 Pro, Xcode 27)Pass2026-09-26
Release build of this archive: install, launch, relaunch, dark mode; no crash in logcatAndroidAndroid Emulator (Pixel 9)Pass2026-09-26

Not included

  • No bank, card or Open Banking connections: all entries are typed by the person
  • No currency conversion: totals and budgets use the default currency; other currencies are listed separately
  • No account, cloud sync or backup service: data is local to the device (CSV export is the portable copy)
  • No notifications, receipt capture, biometric lock or at-rest encryption
  • No analytics or network calls from app code

Each boundary comes with instructions for adding it in docs/INTEGRATION-BOUNDARIES.md.

Known limitations

  • Native iOS/Android runs not yet verified by the author (pending custodian run on a Mac)
  • Web export is a layout preview only (sql.js + localStorage), not a supported platform
  • Budgets are monthly, per category, in the default currency only
  • Phone layout on tablets; no list-detail split
  • JS tab bar (native tabs are unstable in SDK 57)
  • Expenses only: no income, transfers or split transactions
  • Tests need Node >= 22.13 (@testing-library/react-native 14)

Licence

Use in unlimited end products incl. client/commercial; no resale/redistribution as a template, kit or dataset; no ML training. Survives cancellation for delivered versions.

Full terms: Motif template licence. Open-source parts keep their own licences (licenses.json, id lic-premium-expense-log-1-0-2).

Ask your agent

Use Motif to activate the premium-expense-log template and download it. Then adapt it for a climbing gym's route log: replace the content and imagery, keep the design tokens and every state in docs/STATE-MATRIX.md, and run check_design_contract before you finish.

Motif guides applied

app-design-gate-workflow · app-category-finance · app-transplant-test-no-generic-template-app · app-template-tab-fab-onboarding-budgets · app-visual-identity-system-five-decisions · app-functional-truth-rulings · app-screen-state-matrix · app-empty-states · app-destructive-actions-undo-vs-confirm · app-trash-and-soft-delete · app-swipe-actions-with-accessible-alternatives · app-form-validation-feedback · app-input-types-and-autofill · app-save-model-and-unsaved-changes-guard · app-search-filters-and-no-results-recovery · app-local-persistence-choice-expo · app-sqlite-data-model-offline-first · app-tab-bar-implementation-expo-router · app-theming-light-dark-system · app-dynamic-type-and-font-scaling · app-touch-targets-and-spacing · app-react-native-accessibility-semantics · app-safe-areas-and-edge-to-edge · app-onboarding-first-value · app-haptics-usage-guidelines · app-back-navigation-ios-android · app-platform-conventions-vs-brand · sys-chart-selection-by-question · sys-accessible-chart-text-alternative-and-data-table · sys-honest-axes-and-lie-factor

Archive

SHA-256 060fc4af7cd91d92e8340851d417f78456aa4c60f66a2ecc80b0bc84f315b815