The simple way for tailors to save, organize, and reuse customer measurements.
Status: Public Beta. Distributed via APK to a small tester cohort. Play Store launch later.
A frontend-only React Native (Expo) app that stores customer measurements on the user's device. No backend, no account, no telemetry.
- Audience: individual tailors who currently track measurements on paper.
- Core flow: create reusable measurement templates → add customers under a template → enter and edit measurements → export to PDF or share.
- Data: customer name + arbitrary measurement key/value pairs. Stored locally in AsyncStorage. Lock password stored in iOS Keychain / Android Keystore via
expo-secure-store(salted SHA-256, never plaintext). - Distribution: Android-first via APK / Play Console Internal Testing. iOS later.
- Expo SDK 54 / React Native 0.81 / React 19
- TypeScript strict mode
- expo-router (file-based routing) with typed routes
- Zustand for state, with
persistmiddleware over AsyncStorage - Outfit via
@expo-google-fonts/outfit expo-secure-storefor credentials,expo-cryptofor hashing/random IDs,zodfor backup schema validationexpo-print+expo-sharingfor PDF export,expo-document-picker+expo-file-systemfor backup import/exportreact-native-reanimated+react-native-gesture-handlerfor swipe actions and draggable lists
npm install
npx expo startThen press a for Android (emulator or USB-connected device with developer mode on), i for iOS simulator (macOS only), or scan the QR with Expo Go for a quick preview.
Run the same checks CI runs:
npx tsc --noEmit # type-check
npx expo lint # lint
npm test # 15 unit tests# Preview APK for beta testers
eas build --profile preview --platform android
# Production AAB / APK
eas build --profile production --platform androidSee docs/HOW_TO_RELEASE.md for the full release flow, including OTA updates via eas update.
app/ # expo-router screens (onboarding, lock-setup, customers, templates, setup)
components/ # shared UI (LockGate, drawer, sheets, buttons, error fallback)
stores/ # Zustand stores (customers, templates, preferences, lock) + zod schemas
hooks/ # useTheme, useHistory, useReducedMotion
utils/ # auth (SecureStore wrapper), backup, pdf, time helpers
theme/ # colors, fonts
assets/ # icons, splash, illustrations
docs/ # privacy notice, threat model, incident-response, release runbook
__tests__/ # jest-expo unit tests (stores + schemas + utils)
- Customer measurement data is personally identifiable under NDPA (Nigeria). The canonical privacy notice is
docs/PRIVACY.md. - See
SECURITY.mdfor vulnerability reporting. - See
docs/security/threat-model.mdfor the in-scope threats and the mitigations in place. - See
docs/security/incident-response.mdfor what happens if something goes wrong.
PRs welcome — but please read CONTRIBUTING.md first. For anything bigger than a typo or copy fix, open an issue before writing code so we can talk through the approach.
For security issues, email seunainascott@thegoodstuff.com.ng directly. Don't open a public issue.
- Built by Tobiloba Sulaimon (@tobilobacodes00)
- Designed by Abdul ui ux
MIT © 2026 Tobiloba Sulaimon