Building trust in rentals, one verification at a time
Features β’ Quick Start β’ Architecture β’ Documentation β’ Deployment
Rentro is a production-ready rental ecosystem that revolutionizes trust and safety in property rentals through AI-powered verification systems. Built entirely with FREE resources, it combines cutting-edge AI with seamless user experience across mobile and web platforms.
- π« Fake property listings and scams
- π€ Unverified landlords and tenants
- π¬ Poor communication channels
- β° Slow manual verification processes
A three-tier platform featuring AI-powered spam detection, facial recognition verification, real-time chat, and comprehensive admin controlsβall running on free-tier services.
|
|
π‘οΈ VeriSentry - Trust & Safety Agent
- Spam Detection: Analyzes property descriptions for scam patterns
- Image Verification: Matches property photos with descriptions
- Face Recognition: Compares ID cards with live selfies
- Trust Scoring: Assigns 0-100 trust scores to users
π‘ HelpBot - Support Assistant
- Auto-responses: Handles common queries 24/7
- Sentiment Analysis: Detects frustrated users
- Escalation: Flags urgent issues for admins
- Multi-lingual: Supports multiple languages
graph TB
A[Mobile App<br/>React Native + Expo] -->|REST API| B[AI Backend<br/>Node.js + Express]
A -->|Authentication| C[Firebase Auth]
A -->|Database| D[Firestore]
A -->|Storage| E[Firebase Storage]
F[Admin Panel<br/>React + Vite] -->|REST API| B
F -->|Authentication| C
F -->|Database| D
B -->|AI Models| G[Hugging Face API]
style A fill:#4F46E5,stroke:#333,stroke-width:2px,color:#fff
style F fill:#4F46E5,stroke:#333,stroke-width:2px,color:#fff
style B fill:#10B981,stroke:#333,stroke-width:2px,color:#fff
style C fill:#F59E0B,stroke:#333,stroke-width:2px
style D fill:#F59E0B,stroke:#333,stroke-width:2px
style E fill:#F59E0B,stroke:#333,stroke-width:2px
style G fill:#EF4444,stroke:#333,stroke-width:2px,color:#fff
Rentro application/
βββ π― rentro-backend/ # AI Wrapper Service
β βββ server.js # Express server with 4 AI endpoints
β βββ package.json
β βββ .env.example
β
βββ π± rentro-mobile/ # React Native + Expo App
β βββ app/
β β βββ (auth)/ # Login & Signup screens
β β βββ (tenant)/ # Tenant experience
β β βββ (owner)/ # Owner dashboard
β β βββ _layout.tsx # Root navigation
β βββ firebaseConfig.js
β βββ app.json
β
βββ π» rentro-admin/ # Web Admin Panel
β βββ src/
β β βββ pages/ # Dashboard, Verification, Properties
β β βββ components/ # Reusable UI components
β β βββ config/firebase.js
β βββ tailwind.config.js
β
βββ π§ shared/ # Shared utilities
βββ firebaseConfig.js
βββ constants.js
β
Node.js 18+ and npm
β
Android Studio (for mobile testing)
β
Firebase Account (free tier)
β
Hugging Face Account (free API key)Step 1: Clone Repository
cd "Rentro application"Step 2: Firebase Setup
- Go to Firebase Console
- Create a new project (or use existing)
- Enable Authentication β Email/Password
- Create Firestore Database (test mode initially)
- Enable Storage
- Copy your config and update
firebaseConfig.jsfiles
Step 3: Backend Setup
cd rentro-backend
# Install dependencies
npm install
# Setup environment variables
cp .env.example .env
# Add your Hugging Face API key: https://huggingface.co/settings/tokens
# Start development server
npm run devβ
Backend running on http://localhost:5000
API Endpoints:
POST /api/analyze-listing- Spam detectionPOST /api/analyze-images- Image captioningPOST /api/verify-face- Face matchingPOST /api/chat-bot- Support chatbot
Step 4: Mobile App Setup
cd ../rentro-mobile
# Start Expo
npx expo startRun on Android Emulator: Press a in terminal
Run on Physical Device: Scan QR code with Expo Go app
π‘ Important: Update API URL in
app/(owner)/add-listing.tsx
- Development:
http://YOUR_IP:5000- Android Emulator:
http://10.0.2.2:5000
Step 5: Admin Panel Setup
cd ../rentro-admin
# Start development server
npm run devβ
Admin panel running on http://localhost:5173
Default Admin Credentials:
Create an account and manually set role: 'admin' in Firestore
users/{uid}
{
email: "user@example.com",
name: "John Doe",
phone: "+1234567890",
role: "tenant" | "owner" | "admin",
isVerified: false,
trustScore: 0, // 0-100
createdAt: timestamp
}properties/{propId}
{
ownerId: "uid_123",
title: "2BHK Apartment in Downtown",
description: "Spacious apartment...",
price: 15000,
city: "New York",
location: {
address: "123 Main St",
lat: 40.7128,
lng: -74.0060
},
images: ["url1", "url2"],
amenities: ["WiFi", "Parking", "Gym"],
type: "apartment",
bhk: 2,
status: "pending" | "verified" | "rejected",
aiAnalysis: {
spamScore: 25,
imageMatch: true,
flags: []
},
createdAt: timestamp
}verifications/{reqId}
{
userId: "uid_123",
idCardUrl: "storage_url",
selfieUrl: "storage_url",
status: "pending" | "approved" | "rejected",
aiFaceMatchScore: 87.5, // 0-100
submittedAt: timestamp,
reviewedAt: timestamp,
reviewedBy: "admin_uid"
}Add these rules to your Firestore:
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /users/{userId} {
allow read: if request.auth != null;
allow create: if request.auth.uid == userId;
allow update: if request.auth.uid == userId ||
get(/databases/$(database)/documents/users/$(request.auth.uid)).data.role == 'admin';
}
match /properties/{propertyId} {
allow read: if true;
allow create: if request.auth != null;
allow update: if request.auth.uid == resource.data.ownerId ||
get(/databases/$(database)/documents/users/$(request.auth.uid)).data.role == 'admin';
}
match /verifications/{verificationId} {
allow read: if request.auth != null;
allow create: if request.auth.uid == request.resource.data.userId;
allow update: if get(/databases/$(database)/documents/users/$(request.auth.uid)).data.role == 'admin';
}
match /chats/{chatId} {
allow read, write: if request.auth.uid in resource.data.participants;
}
}
}- Push code to GitHub
- Create Web Service on Render.com
- Build Command:
cd rentro-backend && npm install - Start Command:
cd rentro-backend && npm start - Add environment:
HUGGINGFACE_API_KEY - Deploy! π
cd rentro-mobile
# Install EAS CLI
npm install -g eas-cli
# Build APK
eas build --platform android --profile previewcd rentro-admin
# Deploy
npx vercel
# Production
npx vercel --prod| Category | Technologies |
|---|---|
| Frontend | React Native, Expo, React, Vite, Tailwind CSS |
| Backend | Node.js, Express.js |
| Database | Firebase Firestore, Firebase Storage |
| AI/ML | Hugging Face (BLIP, DistilBERT, FLAN-T5) |
| Deployment | Render.com, Vercel, EAS Build |
| Authentication | Firebase Auth |
- User authentication
- Property listings
- AI spam detection
- Face verification
- Real-time chat
- Admin panel
- Push notifications
- Google Maps integration
- Payment gateway (Stripe/Razorpay)
- Advanced search with Algolia
- Email notifications
- Reviews & ratings system
- Booking management
- Analytics dashboard
π§ MVP Version - Some features are simplified for rapid deployment
- Hugging Face Rate Limits: Free tier ~1000 requests/day
- Face Verification: Simplified algorithm (upgrade for production)
- Maps: Not integrated yet
- Push Notifications: Not configured
- Payments: Not implemented
| Service | Tier | Monthly Cost |
|---|---|---|
| Firebase | Spark (Free) | $0.00 |
| Hugging Face | Free | $0.00 |
| Render.com | Free | $0.00 |
| Vercel | Hobby | $0.00 |
| Total | $0.00 β¨ |
This project is licensed under the MIT License - see the LICENSE file for details.
Contributions are welcome! Please feel free to submit a Pull Request.
- 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
Need help? Here's how to get support:
- π§ Email: anuragwaskle2022@gmail.com
If you find Rentro helpful, please consider giving it a star β
Built with β€οΈ for safer rentals
Made with β and π» by the Anurag Waskle
