A mobile-first Expo app for sending customer status update notifications via email.
- Fake Login — Authenticate with any credentials to access the app
- Customer Dashboard — View customers and their current process stage
- Status Notifications — Send email updates to customers when their status changes
- Settings — Manage process steps (add, remove, reorder)
- Expo (SDK 54) with expo-router
- NativeWind + TailwindCSS for styling
- EmailJS for transactional email delivery
- React Native
- Install dependencies:
npm install- Start the development server:
npx expo start- Scan the QR code with Expo Go, or press
ifor iOS simulator /wfor web.
If you see issues after adding NativeWind, try clearing the Metro cache:
npx expo start --clearapp/
_layout.tsx # Root layout with auth routing
login.tsx # Login screen (accepts any credentials)
(tabs)/
_layout.tsx # Tab bar: Dashboard | Settings
index.tsx # Dashboard: customer list + email sending
settings.tsx # Settings: manage process steps
context/
app-context.tsx # Shared in-memory state
lib/
email.ts # EmailJS integration
utils.ts # cn() utility for Tailwind class merging
The app uses EmailJS for sending emails. Credentials are configured in lib/email.ts.
Your EmailJS email template should use these variables:
| Variable | Description |
|---|---|
{{to_name}} |
Customer name |
{{to_email}} |
Customer email address |
{{step_name}} |
Selected process step label |
{{from_name}} |
"Pigeon" |
The recipient email must be verified under Account > Authorized Recipients in your EmailJS dashboard before sending.
Currently, all state (customers, steps, auth) is in-memory and resets on app reload. For production, add persistence with AsyncStorage or a backend database.