A mobile application built with React Native and Expo that matches users based on their favorite anime and K-drama shows. Mio creates connections between users with similar entertainment preferences, allowing them to chat and form relationships around their common interests.
π Get Mio on Google Play Store
A quick look at the Mio App interface:
- Secure login and registration using email/password
- Google Sign-In integration
- Create and customize personal profiles
- Upload a profile picture
- Manage personal info and favorite shows
- Delete your account permanently
- Browse trending Anime and K-Drama shows
- Add up to 10 favorite shows
- Weekly cooldown to remove shows
- Smart Matching Algorithm to pair users based on shared interests
- Match types:
- π΅ Match β moderate common interests
- π£ Super Match β high commonality
- Cooldown Mechanism: After a certain number of searches or show removals, users must wait for a cooldown period before continuing
- Chat system for matched users
- Messages stored in Firebase Firestore
- Chats auto-archived to Firebase Storage after inactivity (via Cloud Functions)
- Users can delete individual chats
- Block or unmatch any user
- Report inappropriate accounts
- Real-time notifications when a match is found
- Built using Firebase Cloud Messaging (FCM)
- Works across devices to ensure instant updates
- Force Update Mechanism: When a critical app update is released, users are required to download the latest version before continuing to use the app
-
Frontend:
- React Native / Expo
- TypeScript
- Expo Router for navigation
- React Context for state management
-
Backend:
- Firebase Authentication
- Firestore Database
- Firebase Cloud Functions
- Firebase Storage
-
External APIs:
- TMDB (The Movie Database) API for show information
- Cloudinary for image storage and management
- Node.js (v16 or newer)
- npm or yarn
- Expo CLI (
npm install -g expo-cli) - Firebase account
- TMDB API key
- Cloudinary account
# Clone the repository
git clone https://github.com/yourusername/Mio-App.git
# Navigate to the project directory
cd Mio-App
# Install dependencies
npm install
# Start the development server
npx expo startCreate a .env file in the root directory with the following configurations:
# Firebase configuration
EXPO_PUBLIC_FIREBASE_API_KEY=your-firebase-api-key
EXPO_PUBLIC_FIREBASE_AUTH_DOMAIN=your-firebase-auth-domain
EXPO_PUBLIC_FIREBASE_PROJECT_ID=your-firebase-project-id
EXPO_PUBLIC_FIREBASE_STORAGE_BUCKET=your-firebase-storage-bucket
EXPO_PUBLIC_FIREBASE_MESSAGING_SENDER_ID=your-firebase-messaging-sender-id
EXPO_PUBLIC_FIREBASE_APP_ID=your-firebase-app-id
# TMDB API
EXPO_PUBLIC_TMDB_API_KEY=your-tmdb-api-key
# Cloudinary
EXPO_PUBLIC_CLOUDINARY_CLOUD_NAME=your-cloudinary-cloud-name
EXPO_PUBLIC_CLOUDINARY_UPLOAD_PRESET=your-cloudinary-upload-preset
- Create a Firebase project at https://console.firebase.google.com/
- Enable Authentication (Email/Password)
- Create a Firestore database
- Set up Firebase Storage
- Deploy the Cloud Functions in the
functionsdirectory:
cd functions
npm install
firebase deploy --only functions# Push environment variables to EAS
eas secret:push --scope project --env-file ./.env --force
# Build a preview version
eas build --platform android --profile preview
# Build a production version
eas build --platform android --profile production# in development# Update the preview channel
eas update --branch preview
# Update the production channel
eas update --branch productionMio/
βββ app/ - Main application screens and navigation
β βββ (admin)/ - Admin-only screens
β βββ (auth)/ - Authentication screens
β βββ (common)/ - Common screens like series details
β βββ (conversations)/ - Chat and messaging screens
β βββ (tabs)/ - Main tab screens (home, inbox, profile)
βββ assets/ - Images, fonts and other static assets
βββ components/ - Reusable UI components
βββ config/ - Configuration files (Firebase, Cloudinary)
βββ constants/ - App constants and theme settings
βββ context/ - React Context providers
βββ functions/ - Firebase Cloud Functions
β βββ src/
β β βββ index.ts - Cloud functions definitions
βββ hooks/ - Custom React hooks
βββ utils/ - Utility functions
The app uses several Firebase Cloud Functions:
scheduleMessageArchiving: Daily cron job for archiving old messagesmanualArchiveMessages: Administrative function for manual archive triggeringdeleteConversationData: Removes conversation data when users unmatch or block
MIT
- π§ Email: oitijya2002@gmail.com
- π LinkedIn: Oitijya Islam Auvro
- π» GitHub: AuvroIslam





