FreeAppAvailable

Commonplace — collection app starter (Expo)

A local-first iOS/Android app for saving books, articles, links, ideas and quotes: collections, tags, debounced search, detail, validated create/edit, undoable delete, light/dark, spacious/compact density, JSON export. SQLite with migrations.

Get this free

Sign in (or create a free account; no card), then find it in your library.

Version
1.0.1
Platforms
iOS, Android
Framework
expo
Archive
3.5 MB 199 files

What it does

  • onboarding (skippable, remembered)
  • create item
  • edit item
  • organise into collections
  • tag and filter by tag
  • search with type filter
  • delete with undo / restore from Recently deleted
  • switch theme and density
  • export library as JSON
  • persist across restart

Screens

  • onboardingTwo skippable steps; start empty or with labelled sample items
  • libraryCollections with counts and recently added items
  • collectionItems in a collection (or all) with sort and density
  • item-detailItem facts, link, tags, notes, catalogue slip; edit/share/delete
  • item-newCreate item modal with inline validation
  • item-editEdit item modal with unsaved-changes guard
  • searchDebounced search, type chips, recent searches, no-results recovery
  • tagsCreate, rename and delete tags
  • tag-itemsItems filtered by tag
  • settingsTheme, density, export, Recently deleted, samples, erase
  • trashRestore or permanently delete (30-day retention)
  • aboutVersion, data location, integration boundaries, acknowledgements
  • collection-formName or rename a collection
  • tag-formRename a tag

States covered

  • First run
  • Empty
  • Loading
  • Error
  • No results
  • Validation
  • Destructive confirm
  • Undo
  • Not found
  • Unsaved changes

Stack and versions

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

Commands:

installnpm ci
devnpx expo start
testnpm test
typechecknpx tsc --noEmit
doctornpx expo-doctor
buildnpx expo run:ios | npx expo run:android (local native builds) or eas build
web_previewnpm run export:web && npm run preview:web
e2emanual native script in docs/VERIFICATION.md §3

Tested

CheckPlatformToolResultDate
dependency audit after overrides (decode-uri-component 0.5.0, uuid 11.1.1): 0 known vulnerabilities; jest, tsc, expo-doctor, Metro iOS + Android bundles re-runNodenpm audit (npm 11)Pass2026-09-26
unit + screen tests (50 tests, 7 suites)Nodejest 29.7.0 + jest-expo 57.0.5 + @testing-library/react-native 13.3.3Pass2026-09-26
type checkNodeTypeScript 6.0.3 (tsc --noEmit)Pass2026-09-26
Expo dependency/config checksNodeexpo-doctor (21 checks)Pass2026-09-26
native project generation (not compiled)Nodeexpo prebuild --no-installPass2026-09-26
web export preview screenshots (web export preview — not native verification)web_previewexpo export --platform web + Chromium (Playwright) at 390x844 and 412x915Pass2026-09-26
fresh-copy reproduction from packaged archive (npm ci, npm test, tsc, expo-doctor)Nodenpm ci + jest + tscPass2026-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 account system or sign-in: the library is local to the device
  • No cloud sync or backup: JSON export via the share sheet is the only copy
  • No push or local notifications; no permissions are requested
  • No in-app purchases
  • No analytics, crash reporting or telemetry; the app makes no network requests of its own
  • No import screen (tested importLibrary() function provided); no item images

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

Known limitations

  • Native iOS/Android runs not yet performed (pending); only Node tests, type checks, expo-doctor, prebuild and web-export previews were run
  • Native tabs use expo-router/unstable-native-tabs (SDK 57); a JavaScript-tabs fallback exists for web
  • Phone-first layout; no tablet split view
  • Deleting the app deletes the library unless it was exported
  • Web export is a preview only (expo-sqlite web is alpha and needs COOP/COEP headers)
  • Swipe gestures, haptics and screen-reader behaviour are verified only by the native script, not by Jest

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-free-app-collection-1-0-1).

Ask your agent

Use Motif to activate the free-app-collection 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-collection-app-reference-architecture · app-design-gate-workflow · app-transplant-test-no-generic-template-app · app-template-tab-fab-onboarding-budgets · app-anti-pattern-website-in-a-phone-frame · app-functional-truth-rulings · app-hard-fail-signatures-static-checks · app-visual-identity-system-five-decisions · app-platform-conventions-vs-brand · app-tab-bar-implementation-expo-router · app-back-navigation-ios-android · app-modal-sheet-or-push-selection · app-collection-list-vs-grid-and-row-anatomy · app-item-detail-screen-anatomy · app-density-compact-and-spacious-modes · app-empty-states · app-screen-state-matrix · app-error-and-offline-states · app-form-validation-feedback · app-form-keyboard-handling-expo · app-save-model-and-unsaved-changes-guard · app-search-placement-and-behavior · app-search-filters-and-no-results-recovery · app-destructive-actions-undo-vs-confirm · app-trash-and-soft-delete · app-swipe-actions-with-accessible-alternatives · app-local-persistence-choice-expo · app-sqlite-data-model-offline-first · app-onboarding-first-value · app-settings-screen-architecture · app-theming-light-dark-system · app-dynamic-type-and-font-scaling · app-touch-targets-and-spacing · app-safe-areas-and-edge-to-edge · app-react-native-accessibility-semantics

Archive

SHA-256 d10c8a89b8fa00b464a79e92f5118fe4c38a45c88b1f31b4e9616ea544f87233