CreatorAppAvailable

Small inventory app (Tally)

Local-first Expo stock app: items with SKU, location and money in minor units; an immutable, trigger-enforced adjustment ledger with reason codes and reversals; low-stock reorder view; barcode scanning with permission recovery; validated CSV import and safe export.

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
2.1 MB 143 files

What it does

  • add and edit items (SKU, barcode, category, location, supplier, cost/price)
  • receive / remove stock with reason codes
  • cycle count
  • undo via linked reversal (immutable ledger)
  • low-stock reorder list with suggested quantities
  • search, filter by status/category, sort
  • scan barcode or enter SKU to find and adjust
  • CSV import with row validation preview
  • CSV export of items, ledger and reorder list
  • archive, restore, delete permanently
  • persist locally across restarts

Screens

  • stockSearch/filter/sort list with swipeable stock-gauge rows; first-run empty state; Android Scan FAB
  • reorderLow and out-of-stock items by urgency with suggested order and CSV export
  • ledgerEvery stock movement, filter by reason, CSV export
  • dataCSV import/export, template, currency, categories, appearance, sample data, erase
  • itemGauge, money, actions, per-item ledger with reversal, archive/delete
  • item-editCreate/edit item with validation and uniqueness checks
  • adjustAdd / Remove / Count with reasons, preview and undo
  • scanBarcode scanner with permission priming/recovery and manual entry
  • importCSV import preview with per-line errors and transactional apply
  • categoriesRename and delete categories

States covered

  • Loading
  • Empty
  • First run
  • Error
  • No results
  • Validation
  • Destructive confirm
  • Undo
  • Permission prompt
  • Permission denied
  • Permission blocked
  • Import row errors
  • Stock limit
  • Large text
  • Dark mode

Stack and versions

expo57.0.25
expo-router57.0.23
expo-sqlite57.0.3
expo-camera57.0.5
react19.2.3
react-native0.86.3
react-native-gesture-handler2.32.0
typescript6.0.3
jest29.7.0
jest-expo57.0.5
@testing-library/react-native13.3.3
sql.js1.14.2 (web preview + tests only)

Commands:

installnpm ci
devnpx expo start
testnpm test
typechecknpx tsc --noEmit
doctornpx expo-doctor
buildnpx expo prebuild (or EAS Build); npx expo run:ios | npx expo run:android for development builds
e2enone (native procedure in docs/VERIFICATION.md)
web_previewnpx expo export -p web && node scripts/web-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 (38: money, CSV, stock rules, trigger-enforced ledger integrity, import, restart persistence, migration v1->v2, screens)Nodejest 29.7 + jest-expo 57 + @testing-library/react-native 13.3Pass2026-09-26
typecheckNodetsc 6.0.3 --noEmitPass2026-09-26
expo-doctorNodeexpo-doctor (21 checks)Pass2026-09-26
native project generationNodeexpo prebuild --no-install --clean (temp copy)Pass2026-09-26
web export preview screenshots (not native verification; camera not exercised)webexpo export -p web + Playwright ChromiumPass2026-09-26
fresh-copy reproduction from packaged archive (npm ci, npm test, tsc)Nodenpm 10.9 / Node 22.22Pass2026-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
barcode scanning with a real cameraiOSphysical devicePendingNot run yet—
barcode scanning with a real cameraAndroidphysical devicePendingNot run yet—

2 checks still pending. Pending means it hasn't been run yet, not that it passed.

Not included

  • No accounts, cloud sync or multi-device/multi-user: data is local to the device (CSV export provided)
  • No multi-warehouse quantities (location is a label)
  • No purchase orders or supplier ordering (reorder list export only)
  • No POS / e-commerce sync
  • Single currency; no tax, FX or landed cost
  • No lot, serial or expiry tracking; no label printing
  • No network calls, analytics or crash reporting

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

Known limitations

  • Native iOS/Android runs and real-camera scanning are pending (web export preview screenshots only so far)
  • Currency is locked once any item has a price (no conversion)
  • Ledger view shows the newest 500 entries; full history via CSV export
  • CSV import limited to 5,000 rows / 2 MB per file
  • Database is not encrypted by the app (OS sandbox only)
  • Web export is a preview target only (sql.js + localStorage, manual code entry instead of camera)

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-inventory-1-0-2).

Ask your agent

Use Motif to activate the premium-inventory 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-transplant-test-no-generic-template-app · app-visual-identity-system-five-decisions · app-template-tab-fab-onboarding-budgets · app-tab-bar-implementation-expo-router · app-hard-fail-signatures-static-checks · app-functional-truth-rulings · app-category-productivity · app-category-utility · app-local-persistence-choice-expo · app-sqlite-data-model-offline-first · app-swipe-actions-with-accessible-alternatives · app-destructive-actions-undo-vs-confirm · app-permission-requests-and-recovery · app-dynamic-type-and-font-scaling · app-react-native-accessibility-semantics · app-theming-light-dark-system · app-platform-conventions-vs-brand · app-screen-state-matrix · app-form-validation-feedback

Archive

SHA-256 da6e46a1f81f506cd0857da460edaa9bd605bd8362444b22da9365205c339919