Skip to content
/ mobile Public

QuickApp Mobile - React Native/Expo mobile application for iOS and Android

License

Notifications You must be signed in to change notification settings

quckapp/mobile

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

4 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

QuckApp Mobile

Production-ready React Native chat application with real-time messaging and audio/video calling.

React Native Expo TypeScript Redux Socket.io

πŸš€ Features

  • βœ… User Authentication - Login and registration
  • βœ… Real-time Chat - Instant messaging with Socket.io
  • βœ… Audio/Video Calls - WebRTC-powered calling
  • βœ… Group Conversations - Create and manage group chats
  • βœ… Message Reactions - React to messages with emoji
  • βœ… Read Receipts - See when messages are read
  • βœ… Typing Indicators - See when others are typing
  • βœ… Push Notifications - Stay updated with new messages
  • βœ… File Sharing - Share images, videos, and files
  • βœ… User Search - Find and connect with users
  • βœ… Offline Support - Redux Persist for offline data
  • βœ… Modern UI - Clean and intuitive interface

πŸ“‹ Prerequisites

  • Node.js 18+ or 20+
  • npm or yarn
  • Expo CLI
  • iOS Simulator (Mac) or Android Emulator
  • OR physical device with Expo Go app

πŸ› οΈ Installation

  1. Clone the repository
git clone https://github.com/QuckApp/quckapp-mobile.git
cd quckapp-mobile
  1. Install dependencies
npm install
  1. Configure API endpoints

Edit the following files to point to your backend:

src/services/api.ts:

const API_URL = __DEV__
  ? 'http://localhost:3000/api/v1'  // or your local IP
  : 'https://your-production-backend.com/api/v1';

src/services/socket.ts & webrtc.ts:

const SOCKET_URL = __DEV__
  ? 'http://localhost:3000'
  : 'https://your-production-backend.com';

Note:

  • iOS Simulator: use http://localhost:3000
  • Android Emulator: use http://10.0.2.2:3000
  • Physical Device: use http://YOUR_LOCAL_IP:3000
  1. Start the app
npm start

Then:

  • Press i for iOS Simulator
  • Press a for Android Emulator
  • Scan QR code with Expo Go app for physical device

πŸ“± Running on Devices

iOS (Mac required)

npm run ios

Android

npm run android

Web (for testing)

npm run web

πŸ—οΈ Project Structure

src/
β”œβ”€β”€ navigation/              # Navigation setup
β”‚   β”œβ”€β”€ RootNavigator.tsx   # Root navigation
β”‚   β”œβ”€β”€ AuthNavigator.tsx   # Auth screens
β”‚   └── MainNavigator.tsx   # Main app screens
β”œβ”€β”€ screens/
β”‚   β”œβ”€β”€ auth/               # Authentication screens
β”‚   β”‚   β”œβ”€β”€ LoginScreen.tsx
β”‚   β”‚   └── RegisterScreen.tsx
β”‚   β”œβ”€β”€ main/               # Main app screens
β”‚   β”‚   β”œβ”€β”€ ConversationsScreen.tsx
β”‚   β”‚   β”œβ”€β”€ ChatScreen.tsx
β”‚   β”‚   β”œβ”€β”€ ProfileScreen.tsx
β”‚   β”‚   β”œβ”€β”€ NewConversationScreen.tsx
β”‚   β”‚   └── NewGroupScreen.tsx
β”‚   └── CallScreen.tsx      # WebRTC calling screen
β”œβ”€β”€ services/               # API & WebSocket services
β”‚   β”œβ”€β”€ api.ts             # HTTP client (Axios)
β”‚   β”œβ”€β”€ socket.ts          # Socket.io client
β”‚   β”œβ”€β”€ webrtc.ts          # WebRTC service
β”‚   └── notifications.ts   # Push notifications
β”œβ”€β”€ store/                  # Redux store
β”‚   β”œβ”€β”€ index.ts           # Store configuration
β”‚   └── slices/            # Redux slices
β”‚       β”œβ”€β”€ authSlice.ts
β”‚       β”œβ”€β”€ conversationsSlice.ts
β”‚       β”œβ”€β”€ messagesSlice.ts
β”‚       β”œβ”€β”€ callSlice.ts
β”‚       └── usersSlice.ts
└── App.tsx                 # App entry point

πŸ”§ Technology Stack

  • React Native - Cross-platform mobile framework
  • Expo SDK 50 - Development platform
  • TypeScript - Type safety
  • Redux Toolkit - State management
  • React Navigation 6 - Navigation
  • Socket.io Client - Real-time communication
  • react-native-webrtc - WebRTC for calls
  • Gifted Chat - Chat UI components
  • Expo Notifications - Push notifications
  • Redux Persist - Offline data persistence

πŸ” Backend Integration

This app requires the QuckApp backend to function: πŸ‘‰ QuckApp Backend

Follow the backend setup instructions to run the API server.

πŸ“² Building for Production

Using EAS Build (Recommended)

  1. Install EAS CLI
npm install -g eas-cli
  1. Login to Expo
eas login
  1. Configure build
eas build:configure
  1. Build for Android
eas build --platform android
  1. Build for iOS
eas build --platform ios
  1. Submit to stores
# Android
eas submit --platform android

# iOS
eas submit --platform ios

🎨 Key Screens

Authentication

  • Login Screen - Email/password login
  • Register Screen - New user registration

Main App

  • Conversations - List of all chats with unread counts
  • Chat - Real-time messaging with reactions and typing indicators
  • Call - Audio/video calling interface
  • Profile - User profile and settings
  • New Conversation - Search and start new chats
  • New Group - Create group conversations

πŸ”” Push Notifications

To enable push notifications:

  1. Create a Firebase project
  2. Download google-services.json (Android) and GoogleService-Info.plist (iOS)
  3. Add Firebase configuration to your Expo project
  4. Configure backend with Firebase Admin SDK credentials

πŸ§ͺ Development Tips

Testing on Different Devices

iOS Simulator:

npm run ios

Android Emulator:

npm run android

Physical Device:

  1. Install Expo Go app
  2. Run npm start
  3. Scan QR code

Debugging

  • Use React Native Debugger
  • Enable Remote JS Debugging in dev menu
  • Check console logs in terminal

Hot Reloading

  • Shake device to open dev menu
  • Enable Fast Refresh for instant updates

🌐 Environment Configuration

The app automatically detects development vs production:

// Development (local backend)
__DEV__ === true

// Production (deployed backend)
__DEV__ === false

Update URLs in:

  • src/services/api.ts
  • src/services/socket.ts
  • src/services/webrtc.ts

πŸ“ Scripts

# Start Expo dev server
npm start

# Run on iOS
npm run ios

# Run on Android
npm run android

# Run on Web
npm run web

# Lint code
npm run lint

# Format code
npm run format

# Build for production
npm run build:android
npm run build:ios

πŸ› Troubleshooting

Cannot connect to backend

  • Verify backend is running
  • Check API URLs in service files
  • Use correct IP for physical devices
  • Disable VPN/firewall if blocking

WebRTC not working

  • Grant camera/microphone permissions
  • Test on physical device (simulators may not support WebRTC)
  • Configure TURN server in backend for production

Build errors

  • Clear cache: expo start -c
  • Delete node_modules: rm -rf node_modules && npm install
  • Check Expo SDK compatibility

πŸ“„ License

MIT

🀝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

πŸ“ž Support

For issues and questions, please open an issue on GitHub.


Built with ❀️ using React Native, Expo, and WebRTC

About

QuickApp Mobile - React Native/Expo mobile application for iOS and Android

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •