A React Native mobile application built with Expo and TypeScript that helps dog owners find the perfect food for their pets based on breed and age.
This app recreates the exact design from the provided mockups, featuring:
- Welcome Screen: Branded welcome with animated logo and clear CTA
- Breed Selection Screen: Interactive breed selection with Purebred/Crossbreed options
- Responsive Design: Optimized for mobile devices with proper touch targets
- Accessibility: Full screen reader support and proper ARIA labels
- Node.js (v16 or higher)
- npm or yarn
- Expo CLI (
npm install -g @expo/cli) - iOS Simulator (for iOS development) or Android Studio (for Android development)
-
Clone the repository
git clone <repository-url> cd my-furry-friend-food-finder
-
Install dependencies
npm install
-
Start the development server
npm start
-
Run on device/simulator
- Press
ifor iOS Simulator - Press
afor Android Emulator - Scan QR code with Expo Go app on your device
- Press
src/
├── components/ # Reusable UI components
│ ├── PrimaryButton.tsx
│ ├── SegmentControl.tsx
│ └── Chip.tsx
├── screens/ # App screens
│ ├── WelcomeScreen.tsx
│ └── BreedSelectScreen.tsx
├── navigation/ # Navigation configuration
│ └── index.tsx
├── theme/ # Design tokens and typography
│ ├── tokens.ts
│ └── typography.ts
└── hooks/ # Custom React hooks
└── useBreedSelection.ts
- Primary:
#E74C3C(Red from mockup) - Background:
#FDFDFD(Off-white) - Surface:
#FFFFFF(Pure white) - Text:
#111111(Dark gray) - Accent:
#E74C3C(Red)
- Title: 32px, Bold, All Caps
- Subtitle: 18px, Regular, All Caps
- Button: 18px, Bold, All Caps
- Helper: 14px, Regular, Italic
- xs: 4px, sm: 8px, md: 12px
- lg: 16px, xl: 24px, 2xl: 32px
- Fullscreen layout with safe area awareness
- Custom animated logo (dog with chef hat)
- Centered content with consistent vertical rhythm
- Large, accessible START button
- Segment control for Purebred/Crossbreed selection
- Dynamic helper text for Crossbreed mode
- Responsive grid of breed chips
- Selection validation (1 for Purebred, 2 for Crossbreed)
- Disabled state for Continue button until valid selection
- PrimaryButton: Full-width CTA button with haptics
- SegmentControl: Pill-based selection control
- Chip: Selectable breed options with visual feedback
- Welcome screen displays correctly
- Logo animation works properly
- Navigation to Breed Selection works
- Segment control switches between Purebred/Crossbreed
- Helper text appears only for Crossbreed
- Breed selection works for both modes
- Continue button is disabled until valid selection
- Accessibility features work (VoiceOver/TalkBack)
- Use React Native Debugger for debugging
- Expo DevTools for performance monitoring
- React Navigation DevTools for navigation debugging
- iOS: 13.0+
- Android: API level 21+
- Web: Chrome, Safari, Firefox (via Expo Web)
# Build for iOS
expo build:ios
# Build for Android
expo build:android
# Build for web
expo build:web- Configure app.json with proper bundle identifiers
- Build production version
- Submit to App Store Connect / Google Play Console
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if applicable
- Submit a pull request
This project is licensed under the MIT License.
For support and questions:
- Check the Expo documentation
- Review React Navigation docs
- Open an issue in this repository
Built with ❤️ using React Native + Expo + TypeScript