Overview
Built with Expo 55 and React Native, the mobile app provides a seamless native experience for capturing and accessing your ideas on the go.Technology Stack
- Expo 55 with EAS
- React Native 0.83
- Expo Router for navigation
- Convex for real-time sync
Native Features
- Audio recording
- Camera & photo picker
- File uploads
- Haptic feedback
Key Features
Native Capture Methods
The mobile app offers multiple native ways to capture content:Text Input
Text Input
Quick text notes with a native keyboard experience
- Rich text support
- Auto-save drafts
- Offline support
Audio Recording
Audio Recording
Record voice memos and ideas with high-quality audio
- High-quality audio recording (expo-audio)
- Real-time duration display
- Automatic transcription via AI
- Background recording support
Image & Video
Image & Video
Capture or select media from your device
- Camera integration (expo-image-picker)
- Photo library access
- Video uploads
- EXIF data preservation
Document Upload
Document Upload
Upload PDFs and other documents
- File picker integration (expo-document-picker)
- Multiple file types supported
- Automatic metadata extraction
Share Extension
Share content to Teak from any iOS/Android app:Share Extension Support
Share links, text, images, and files directly to Teak from:
- Safari/Chrome
- Social media apps
- Notes apps
- Photo gallery
- Any app with share functionality
Real-Time Sync
All cards sync in real-time with the Convex backend:- Instant updates across devices
- Offline support with local caching
- Automatic conflict resolution
Installation & Setup
Prerequisites
- Node.js 18+ or Bun
- Expo CLI
- iOS Simulator (for iOS development)
- Android Studio (for Android development)
- EAS CLI (for building)
Development
Building for Production
App Store Metadata
Manage App Store metadata directly from the CLI:Platform-Specific Features
iOS
Apple Authentication
Native Sign in with Apple integration via expo-apple-authentication
Haptic Feedback
Native haptic feedback for interactions using expo-haptics
Share Sheet
Native iOS share sheet integration via expo-sharing
Secure Storage
Keychain integration via expo-secure-store for sensitive data
Android
Share Intent
Native Android share intent handling
File Access
Native file system access via expo-file-system
Network Detection
Network status monitoring via expo-network
Clipboard
System clipboard integration via expo-clipboard
Architecture
Navigation Structure
Component Structure
- Expo UI Components: Native Swift UI components via @expo/ui
- Icons: SF Symbols via expo-symbols for iOS, Material Icons for Android
- Cards Grid: Virtualized list for performance
- Native Modals: Platform-specific modal presentations
State Management
- Convex queries for server state
- React hooks for local state
- AsyncStorage for persistent local data
- Secure Store for sensitive data
Native Modules
Audio Recording
Image & Video
File Upload
Haptic Feedback
Performance Optimization
Virtualized Lists
Use@react-native/virtualized-lists for efficient rendering:
Image Optimization
- Automatic image resizing before upload
- Cached image loading
- Progressive image loading
Offline Support
- Local data caching with AsyncStorage
- Optimistic updates for better UX
- Background sync when online
Deployment
EAS Build
The mobile app uses EAS Build for cloud builds:App Store Submission
Testing
Unit Tests
E2E Testing
Use Expo’s testing tools for end-to-end testing:Learn More
Backend
Learn about the Convex backend
File Operations
Configure file upload handling
Expo
Official Expo documentation
React Native
Official React Native docs