A React Native mobile application built with Expo, TypeScript, Firebase Auth, and Cloud Firestore for managing rental properties. The app supports both landlords (property owners) and tenants (property seekers).
- Create and manage property listings
- Upload property images
- List/de-list properties
- Receive and manage rental requests
- Approve or deny rental applications
- View property details with map integration
- Search and browse available properties
- Filter properties by location, price, bedrooms, etc.
- View detailed property information
- Save properties to shortlist/favorites
- Send rental requests to landlords
- Track request status
- User authentication (login/register)
- User profile management
- Real-time data synchronization
- Map integration for property locations
- Image upload and management
- Push notifications (ready for implementation)
- Frontend: React Native with Expo
- Language: TypeScript
- Authentication: Firebase Auth
- Database: Cloud Firestore
- Storage: Firebase Storage
- Maps: React Native Maps
- Navigation: React Navigation v6
- State Management: React Context API
- UI Components: React Native + Expo Vector Icons
- Node.js (v16 or higher)
- npm or yarn
- Expo CLI
- Firebase project with Firestore and Authentication enabled
- Android Studio (for Android development) or Xcode (for iOS development)
-
Clone the repository
git clone <repository-url> cd RentHub
-
Install dependencies
npm install
-
Firebase Setup
-
Create a new Firebase project at Firebase Console
-
Enable Authentication with Email/Password provider
-
Enable Cloud Firestore
-
Enable Firebase Storage
-
Download the configuration file and create a
.env.localfile in the root of the project with your Firebase configuration. Example:API_KEY=your-api-key AUTH_DOMAIN=your-project.firebaseapp.com PROJECT_ID=your-project-id STORAGE_BUCKET=your-project.appspot.com MESSAGING_SENDER_ID=your-sender-id APP_ID=your-app-id
-
-
Run Application
firebase deploy --only firestore:rules
-
Install dependencies
npm install
-
Start the Expo development server
npx expo start
Or, to run with tunneling for external access:
npx expo start --tunnel
-
Follow the instructions in the Expo CLI to open the app on your device or emulator.
The app uses four main collections:
- users - User profiles and authentication data
- properties - Property listings created by landlords
- rentalRequests - Rental requests from tenants to landlords
- shortlists - Properties saved by tenants
The Firestore security rules ensure:
- Users can only access their own data
- Landlords can only manage their own properties
- Tenants can only create requests for listed properties
- Proper validation for all data operations
- User registration with role selection (landlord/tenant)
- Email/password authentication via Firebase Auth
- Persistent login state with AsyncStorage
- Profile management and updates
- CRUD operations for property listings
- Image upload to Firebase Storage
- Map integration for property locations
- Search and filtering capabilities
- Tenants can send rental requests
- Landlords can approve/deny requests
- Real-time status updates
- Request history tracking
- Save/remove properties from favorites
- Quick access to saved properties
- Shortlist management for tenants
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if applicable
- Submit a pull request
For support and questions:
- Create an issue in the repository
- Contact the development team
- Check the documentation
- Push notifications for new requests
- In-app messaging between landlords and tenants
- Payment integration
- Property viewing scheduling
- Reviews and ratings system
- Advanced search with AI recommendations
- Multi-language support
- Dark mode theme