Community-driven mobile application for CrystalQore Unified Communications.
The CrystalQore backend already provides full mobile support:
- JWT authentication (
POST /api/auth/mobile) for login, token refresh, and logout - Push notifications via Firebase Cloud Messaging (iOS APNs + Android FCM)
- Device registration (
POST /api/devices) for push token management - PWA support as a fallback for mobile browsers
We are looking for community contributors to build native iOS and Android applications.
| Layer | Technology | Rationale |
|---|---|---|
| Framework | React Native (Expo) | Shared codebase with web React knowledge |
| Navigation | React Navigation | Standard for RN apps |
| State | React Query + Zustand | Matches the web app stack |
| Push | @react-native-firebase/messaging |
FCM integration already built server-side |
| WebRTC | react-native-webrtc |
Audio/video calls |
| Storage | @react-native-async-storage/async-storage |
Token persistence |
POST /api/auth/mobile # Login (returns JWT)
GET /api/auth/mobile # Verify token
DELETE /api/auth/mobile # Logout
GET /api/devices # List registered devices
POST /api/devices # Register push token
DELETE /api/devices/:id # Unregister device
GET /api/dashboard # Dashboard data
GET /api/chat/conversations # Chat conversations
POST /api/chat/conversations/:id/messages # Send message
GET /api/cdr # Call detail records
POST /api/click2dial # Initiate call
GET /api/contacts # Contacts list
GET /api/presence/stream # Presence SSE stream
GET /api/webrtc/stream # WebRTC signaling SSE
POST /api/webrtc/call # Initiate WebRTC call
GET /api/notifications # Notifications
GET /api/fax # Fax list
GET /api/files # Files
GET /api/calendar # Calendar events
GET /api/notes # Notes
-
Install prerequisites:
npm install -g expo-cli
-
Initialize the project (from this directory):
npx create-expo-app@latest . --template blank-typescript -
Configure the API base URL in your environment:
EXPO_PUBLIC_API_URL=https://your-crystalqore-instance.com -
Implement authentication flow using
/api/auth/mobile -
Store the JWT securely using
expo-secure-store
- Fork the repository and create a feature branch
- Follow the existing code style (TypeScript, functional components)
- Test on both iOS and Android simulators before submitting PRs
- Keep dependencies minimal and well-maintained
- Document any new API integrations needed
- Login / authentication flow
- Push notification handling (incoming calls, messages)
- Chat (1:1 and group messaging)
- Contacts list with Click2Dial
- Call history (CDR)
- Presence status display
- WebRTC audio/video calls
- Settings and profile management
The mobile app should authenticate via JWT (not session cookies). The server middleware already supports Authorization: Bearer <token> headers and injects user context for all API routes.
For real-time features (presence, WebRTC signaling), connect to the SSE streams at /api/presence/stream and /api/webrtc/stream with the Bearer token.
Copyright 2025-2026 ClearConverse Corporation. Licensed under Apache-2.0.