A cross-platform mobile application built with React Native and Expo that connects pet lovers with pets available for adoption. This app provides a seamless experience for browsing, matching, and connecting with pet owners or shelters.
- Authentication: Secure user login and registration.
- Home Feed: Browse a wide variety of pets available for adoption.
- Pet Details: specialized views for each pet with detailed information.
- Favorites: specific tab to save and track pets you are interested in.
- Matching System: specific functionality to help find the perfect pet match.
- Inbox & Chat: Real-time chat functionality using
react-native-gifted-chatto communicate with pet owners. - Add New Pet: Easy-to-use form for listing pets for adoption, complete with image uploads.
- Events: Discover pet-related events.
- Admin Dashboard: focused area for administrative tasks.
- Internationalization: Support for multiple languages via
i18next.
- Framework: React Native with Expo
- Routing: Expo Router (File-based routing)
- Backend / Auth: Supabase & Firebase
- State Management: React Context API
- UI Components & Styling:
react-native-reanimatedfor animationslottie-react-nativefor vector animationsexpo-linear-gradientreact-native-gifted-chat
- Forms:
react-hook-formwithyupvalidation - Date Handling:
moment,date-fns - Testing:
jest,detox
- Node.js (LTS recommended)
- Expo Go app on your mobile device OR Android Studio / Xcode for emulators.
-
Clone the repository (if applicable):
git clone https://github.com/your-username/pet-adopt.git cd pet-adopt -
Install dependencies:
npm install
-
Environment Setup:
- Create a
.envfile in the root directory if it doesn't exist. - Configure your Supabase/Firebase credentials and other API keys here.
(Note: Refer to
app.jsonor existing.env.exampleif available for required keys)
- Create a
Start the development server:
npx expo start- Run on Android: Press
ain the terminal (requires Android Studio / Emulator). - Run on iOS: Press
iin the terminal (requires Xcode / Simulator - macOS only). - Run on specific device: Scan the QR code with the Expo Go app (Android) or Camera app (iOS).
To run specifically for a platform:
npm run android
# or
npm run iosIf you need to clear the project cache/state:
npm run reset-projectpet-adopt/
├── app/ # Main application source (Expo Router pages)
│ ├── (tabs)/ # Main tab navigation (Home, Favorite, Inbox, etc.)
│ ├── _layout.jsx # Root layout configuration
│ └── ... # Other screens (login, pet-details, etc.)
├── assets/ # Images, fonts, and static assets
├── components/ # Reusable UI components
├── context/ # React Context providers
├── hooks/ # Custom React hooks
├── utils/ # Helper functions
├── e2e/ # End-to-end tests (Detox)
├── app.json # Expo configuration
└── package.json # Dependencies and scripts
Run unit tests with Jest:
npm testContributions are welcome! Please follow these steps:
- Fork the project.
- Create your feature branch (
git checkout -b feature/AmazingFeature). - Commit your changes (
git commit -m 'Add some AmazingFeature'). - Push to the branch (
git push origin feature/AmazingFeature). - Open a Pull Request.
This project is licensed under the MIT License.