An animal identification app built with Expo. Scan animals using your camera and build a collection of identified species in a Pokedex-style grid.
- Camera Scanning: Identify animals in real-time using your device camera
- Trading Cards: Each scan generates a Pokemon-style trading card with 3D tilt effects and holographic overlays
- Rarity System: 7 rarity levels (Common to Gold ex) based on identification confidence
- Terradex: Pokedex-style collection grid organized by taxonomic class and family, tracking ~200 species across 10 classes
- Social Feed: Browse all animal posts from the community
- Cross-Platform: Runs on iOS, Android, and web
- Framework: Expo (React Native) with file-based routing (expo-router)
- Language: TypeScript (strict mode)
- Database: PostgreSQL with Drizzle ORM
- Authentication: BetterAuth with Expo plugin
- Styling: Platform-specific UI (LiquidGlass on iOS, Material on Android)
- Node.js
- PostgreSQL database
- Expo CLI
Create a .env file with:
DATABASE_URL=your_postgres_connection_string
BETTER_AUTH_URL=your_auth_api_url
BETTER_AUTH_SECRET=your_secret_key
ANIMAL_DETECT_API_KEY=your_api_key
npm installnpx drizzle-kit push # Push schema to database (dev)
npm run seed # Seed with sample datanpm start # Start Expo dev server
npm run ios # Run on iOS simulator
npm run android # Run on Android emulator
npm run web # Run in web browserapp/
├── (tabs)/ # Tab navigation (Feed, Terradex, Account)
├── api/ # API routes (auth, cards, terradex, detect)
├── camera.tsx # Camera scanning screen
└── result.tsx # Scan result screen
components/ # Reusable components (AnimalCard variants)
db/ # Database schema and connection
services/ # Animal detection, species database, storage
utils/ # Auth configuration