CreatorAppAvailable

Appointment agenda app (Hourline)

Local-first Expo app for a solo practitioner's bookings: DST-correct Day rail, Week and List views, create/edit/cancel with undo, overlap detection with next-free-time resolution, working hours and breaks, client search, and one-way .ics 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 128 files

What it does

  • view day, week and 30-day list
  • create appointment with client autocomplete and free-slot grid
  • edit appointment
  • cancel with undo, restore, delete permanently
  • detect and resolve overlaps (next free time, move either, intentional double-book)
  • working hours and breaks per weekday
  • search clients and appointments
  • client history
  • export .ics and JSON backup
  • persist locally across restarts

Screens

  • agendaDay hour rail, Week proportional strips, List of next 30 days; first-run setup card
  • appointment-editCreate/edit form with slot grid, validation summary, unsaved-changes guard and conflict review
  • appointment-detailDetails, overlap resolution, cancel/undo, restore, delete, .ics export
  • searchGrouped client and appointment search with no-results recovery
  • clientClient contact, notes, upcoming and past appointments
  • settingsWeek start, default duration, appearance, time zone, export, backup, sample data, erase
  • working-hoursPer-weekday hours and breaks with accessible steppers

States covered

  • Loading
  • Empty
  • First run
  • Error
  • No results
  • Validation
  • Destructive confirm
  • Undo
  • Conflict
  • Warning
  • Dst gap
  • Dst repeat
  • Large text
  • Dark mode

Stack and versions

expo57.0.25
expo-router57.0.23
expo-sqlite57.0.3
react19.2.3
react-native0.86.3
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 (47: DST time math, conflicts, repository, migrations v1->v2, restart persistence, ICS, 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)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

Not included

  • No account system or cloud backup: data is local to the device (JSON backup export provided)
  • No Google/iCloud/Outlook/CalDAV calendar sync: one-way .ics export via the share sheet only
  • No client-facing online booking
  • No reminders or notifications
  • No payments, deposits or no-show fees
  • No recurring appointments or multi-staff/resource scheduling
  • No backup/.ics import
  • No network calls, analytics or crash reporting

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

Known limitations

  • Times display in the device's current time zone; each appointment records its booking zone and flags differences, but a fixed practice time zone is not supported
  • Native iOS/Android runs are pending (web export preview screenshots only so far)
  • Database is not encrypted by the app (OS sandbox only); SQLCipher is documented as an extension
  • No drag-to-reschedule; rescheduling is by editing or 'move to next free time'
  • Web export is a preview target only (sql.js + localStorage storage), not a supported platform

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

Ask your agent

Use Motif to activate the premium-appointment-agenda 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-hard-fail-signatures-static-checks · app-functional-truth-rulings · app-category-productivity · app-local-persistence-choice-expo · app-sqlite-data-model-offline-first · app-destructive-actions-undo-vs-confirm · app-swipe-actions-with-accessible-alternatives · 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 · app-permission-requests-and-recovery

Archive

SHA-256 343a56fb19ac89e8f3419338ebf35dca5b6abdd87e5fb5b20ea6396cfeaf8988