Purrsuit is a cross-platform mobile application designed for tracking and managing pet encounters. Capture photos, log locations, and build your personal collection of animal friends found in the wild. Built with a focus on privacy, offline-first capability, and a delightful user experience.
- 📸 Capture & Collect: Snap photos of cats, dogs, and other pets you meet.
- 🗺️ Map Visualization: View your encounters on an interactive map using MapLibre (works offline!).
- 📍 Location Tracking: Automatically tag encounters with GPS coordinates (privacy-focused, optional).
- 🔒 Secure Storage: All your data is stored locally on your device, encrypted with AES-256 via MMKV and Expo SecureStore.
- 📱 Offline First: Fully functional without an internet connection.
- 🎨 Customization: Add moods, tags, and notes to every encounter.
- 🌙 Dark Mode: Beautifully themed for both light and dark environments.
- Framework: React Native with Expo (Managed Workflow)
- Language: TypeScript
- State Management: MobX-State-Tree
- Navigation: React Navigation 7
- Maps: MapLibre React Native
- Storage: MMKV (Encrypted) + Expo SecureStore
- Error Tracking: Sentry (Privacy-configured)
- Testing: Jest, Maestro
-
Clone the repository
git clone https://github.com/your-username/purrsuit-mobile.git cd purrsuit-mobile -
Install dependencies
bun install
-
Set up Environment Variables Copy the example environment file:
cp .env.example .env
Note: API keys are optional for development but required for Sentry reporting.
-
Run the App
# Start the development server bun start # Run on Android Emulator bun run android # Run on iOS Simulator bun run ios
Purrsuit is built with a "Privacy by Default" architecture:
- Local-First: User data lives on the device. No cloud account is required.
- Encrypted Storage: Sensitive data (locations, notes) is stored in MMKV using an encryption key secured by the device's hardware KeyStore/Keychain.
- Production Hardening: Console logs are automatically stripped in production builds to prevent data leakage.
- Dependency Safety: Dependencies are regularly audited for vulnerabilities.
We use Jest for unit/integration tests and Maestro for end-to-end testing.
# Run Unit Tests
bun run test
# Run Linting
bun run lintContributions are welcome! Please fork the repository and submit a pull request for any enhancements or bug fixes.
This project is licensed under the MIT License.