Communexus is a cross-platform messaging application designed for contractors and service business operators. It combines real-time messaging, AI-powered project intelligence, and multi-channel communication to streamline project coordination and decision-making.
Communexus is a React Native mobile application built with Firebase backend services, featuring:
- Real-time messaging with Firestore for instant communication
- Project threads supporting multiple participants and group conversations
- Media sharing for images, documents, and files
- AI-powered features including thread summarization, action extraction, and smart search
- Cross-platform support for iOS, Android, and Web
- Modern UI/UX with dark theme and accessibility support
- Offline capabilities for working without internet connection
- Node.js: v20+ (required for latest dependencies)
- npm: v10+
- Xcode: 16.1+ (for iOS development)
- macOS: 14.5+ Sonoma (for Xcode 16.1)
# 1. Clone repository
git clone <repository-url>
cd communexus/main
# 2. Install dependencies
npm install
# 3. Start development
npm start
# Press 'i' for iOS, 'a' for Android, 'w' for web# First time setup (already done!)
npx expo prebuild --platform ios
npx expo run:ios
# Daily development (hot reload works!)
npm start # Just like Expo Go!Firebase emulators provide a local development environment for Firestore, Auth, Storage, and Functions:
# Start all Firebase emulators
npx firebase emulators:start
# The emulators will run on:
# - Authentication: http://127.0.0.1:9099
# - Firestore: http://127.0.0.1:8080
# - Storage: http://127.0.0.1:9199
# - Functions: http://127.0.0.1:5001
# - Emulator UI: http://127.0.0.1:4000Important: Keep this terminal running while developing!
# Build and run on default simulator (iPhone 15)
npx expo run:ios --device "iPhone 15"
# Or run on a different device
npx expo run:ios --device "iPhone 14"To test real-time messaging, you can run multiple simulators simultaneously:
# Terminal 1: Start Firebase emulators (if not already running)
npx firebase emulators:start
# Terminal 2: Run first simulator (iPhone 15)
npx expo run:ios --device "iPhone 15"
# Terminal 3: Boot second simulator
xcrun simctl boot "iPhone SE (3rd generation)"
# Terminal 4: Run app on second simulator
npx expo run:ios --device "iPhone SE (3rd generation)"Now you can test messaging:
- Simulator 1 (iPhone 15): Log in as Alice (
alice@demo.com/password123) - Simulator 2 (iPhone SE): Log in as Bob (
bob@demo.com/password123) - Create thread: Tap "+" β Select the other user β Start chatting
- Watch real-time sync: Messages appear instantly on both devices!
Available demo users:
- Alice Johnson:
alice@demo.com/password123 - Bob Smith:
bob@demo.com/password123 - Charlie Davis:
charlie@demo.com/password123 - Or use "Try Demo User" button for quick login
Once simulators are running, you can use hot reload for instant updates:
# In your code editor, make changes to any file
# The app will automatically reload on ALL running simulators!
# If hot reload doesn't work:
# - Press 'r' in the Expo terminal to reload manually
# - Or shake the device and tap "Reload"List all available iOS simulators:
xcrun simctl list devicesCommon devices for testing:
- iPhone 15 Pro Max (large screen)
- iPhone 15 (default)
- iPhone SE (3rd generation) (small screen)
- iPhone 14
- iPad Air (tablet testing)
# 1. Start Firebase emulators (Terminal 1)
npx firebase emulators:start
# 2. Run first simulator (Terminal 2)
npx expo run:ios --device "iPhone 15"
# 3. (Optional) Run second simulator for multi-user testing (Terminal 3)
xcrun simctl boot "iPhone SE (3rd generation)"
npx expo run:ios --device "iPhone SE (3rd generation)"
# 4. Make code changes - hot reload updates all simulators automatically!
# 5. Test features:
# - Real-time messaging
# - Notification system (new!)
# - Settings screen (βοΈ button in header)
# - Badge count updates
# - Multi-user conversations- Arrange side-by-side: Resize simulator windows to see both at once
- Performance: 2 simulators work great, 3+ may slow down your Mac
- View Emulator UI: Open http://127.0.0.1:4000 to see Firebase data in browser
- Notifications: Test push notification settings in the new Settings screen (βοΈ icon)
- Badge counts: Watch unread message badges update in real-time!
Test on your real iPhone using a free Apple ID (no $99/year developer account needed):
- Physical iPhone with USB cable
- Free Apple ID (iCloud account)
- Xcode installed
# 1. Connect iPhone to Mac with USB cable
# 2. Unlock iPhone and tap "Trust This Computer"
# 3. Verify Xcode can see your device
xcrun xctrace list devices
# You should see your iPhone in the list# Open the iOS workspace in Xcode
open -a Xcode ios/Communexus.xcworkspace
# In Xcode:
# 1. Select "Communexus" project in left sidebar
# 2. Select "Communexus" target
# 3. Go to "Signing & Capabilities" tab
# 4. Check "Automatically manage signing"
# 5. Select Team β Add your Apple ID if not listed
# 6. Xcode creates a free provisioning profile automatically# Expo will detect your connected iPhone and install
npx expo run:ios --device
# If you see multiple devices, select your iPhone from the list
# Build takes ~2-3 minutes first timeAfter installation:
- iPhone shows "Untrusted Developer"
- Go to Settings β General β VPN & Device Management
- Tap your Apple ID under "Developer App"
- Tap Trust "[Your Name]"
- Tap Trust again to confirm
# Terminal 1: Firebase Emulators
npx firebase emulators:start
# Terminal 2: Metro Bundler
npm start
# iPhone automatically connects to Metro (same WiFi required)
# Hot reload works perfectly!Free Apple ID Limitations:
- β° App expires after 7 days - just rebuild to refresh (takes 30 seconds)
- π± Must reinstall via USB every 7 days
- π Limited push notification testing (local notifications work)
- β Hot reload works perfectly
- β Firebase emulators work perfectly
- β All features testable except some production push notification scenarios
Daily Development (After Initial Setup):
Once installed, you don't need USB cable for development:
# 1. Start emulators and Metro (as usual)
npx firebase emulators:start # Terminal 1
npm start # Terminal 2
# 2. Open app on iPhone (same WiFi as Mac)
# Connects automatically with hot reload!
# 3. Make code changes
# iPhone reloads automatically!Re-signing After 7 Days:
# When app expires, just reconnect USB and rebuild:
npx expo run:ios --device
# Takes ~30 seconds
# All your data stays intactIf you have a paid Apple Developer account ($99/year):
See PHYSICAL_DEVICE_SETUP.md for complete guide with:
- EAS project initialization
- Development build creation
- Installation via QR code
- No 7-day expiration
- Full push notification support
# One-time setup
npx eas init
# Build development version (~10-15 minutes)
npx eas build --profile development --platform ios
# Install via QR code or email link
# No expiration, no USB needed| Feature | Free (USB) | Paid (EAS) |
|---|---|---|
| Cost | π° FREE | π° $99/year |
| Setup Time | 5 minutes | 15 minutes |
| App Expiration | 7 days (easy refresh) | Never |
| Installation | USB cable | QR code/Wireless |
| Hot Reload | β Yes | β Yes |
| Push Notifications | β Full | |
| Team Distribution | β No | β Yes |
| TestFlight | β No | β Yes |
| Good for Development? | β Excellent | β Excellent |
| Good for Distribution? | β No | β Yes |
Recommendation: Start with Free (USB) for development and testing. Upgrade to paid account when you need to distribute to testers or App Store.
Before committing any code, you should run all CI/CD checks locally to ensure everything passes:
# Run all CI/CD pipeline checks
npm run lint # ESLint code quality
npm run format:check # Prettier formatting
npm run type-check # TypeScript type checking
npm test # Unit and integration tests
npm run build # Verify build worksEnd-to-end tests use Appium and WebDriverIO to test the app in a real simulator:
# Terminal 1: Start Appium server
npm run appium:server
# Terminal 2: Start the app
npm start
# Press 'i' for iOS simulator
# Terminal 3: Run E2E tests
npm run test:e2e:ios
# Run quick smoke tests
npm run test:e2e:ios:simple
# Run with Claude AI visual verification (optional)
ENABLE_VISUAL_CHECKS=true npm run test:e2e:ios:visual# Run all unit and integration tests
npm test
# Run tests with Firebase emulators
npm run test:emul
# Run tests in watch mode
npm test -- --watchcommunexus/main/
βββ src/ # Source code
β βββ components/ # React components
β βββ hooks/ # Custom hooks
β βββ screens/ # App screens
β βββ services/ # Firebase services
β βββ stores/ # State management
β βββ types/ # TypeScript types
βββ tests/ # Test suites
β βββ e2e/ # Appium E2E tests
β β βββ config/ # WebDriverIO configs
β β βββ helpers/ # Test utilities
β β βββ pages/ # Page objects
β β βββ specs/ # Test specifications
β βββ computer-use/ # Claude AI testing
β βββ integration/ # Integration tests
β βββ unit/ # Unit tests
βββ functions/ # Firebase Cloud Functions
βββ docs/ # Documentation
β βββ project/ # Project specs
β βββ CI-CD-Pipeline.md # CI/CD documentation
β βββ EAS-SETUP.md # EAS build guide
βββ specs/ # Feature specifications
βββ memory-bank/ # Project context
βββ ios/ # Native iOS project (EAS build)
βββ .github/workflows/ # CI/CD pipelines
- React Native: 0.81.5
- Expo: SDK 54
- TypeScript: 5.0+ (strict mode)
- React Navigation: v7
- State: React Hooks + Zustand
- Firebase Firestore: Real-time database
- Firebase Auth: User authentication
- Firebase Storage: Media storage
- Firebase Functions: Cloud functions
- E2E: Appium + WebDriverIO
- Unit: Jest + React Native Testing Library
- AI Testing: Claude Sonnet 4 (Computer Use)
- CI/CD: GitHub Actions
- EAS Development Build: Production-like environment
- Hot Reload: Instant code updates
- Firebase Emulators: Local development
- Appium: UI automation
- Real-time chat with Firestore listeners
- Group conversations with multiple participants
- Media sharing (images, documents, files)
- Message status tracking and read receipts
- Optimistic UI updates for instant feedback
- Offline support and message queuing
- Email/password authentication
- Secure Firebase Auth integration
- Test user creation for development
- Demo user quick login
- Thread summarization with OpenAI GPT-4
- Automatic action item extraction
- Priority message detection
- Smart search with semantic understanding
- Proactive assistant suggestions
- Modern dark theme design
- Accessibility labels and support
- Cross-platform consistency (iOS, Android, Web)
- Responsive design for all screen sizes
The project uses GitHub Actions for automated CI/CD. On every push to main:
- Code quality checks (ESLint, Prettier, TypeScript)
- Test suite execution (Jest unit/integration tests)
- Build verification (Firebase Functions, Expo app)
- Deployment to Firebase services
See .github/workflows/ci-cd.yml for complete pipeline configuration.
# Deploy Firebase services
firebase deploy
# Build mobile apps with EAS
eas build --platform ios
eas build --platform android
eas build --platform all- EAS Setup Guide - Development build setup
- CI/CD Pipeline - GitHub Actions workflow
- E2E Testing - Appium test documentation
- Computer Use Testing - AI-powered testing
- Specifications - Feature specs and tasks
- Memory Bank - Project context and decisions
# Make sure Appium server is running
npm run appium:server
# Make sure app is running
npm start # Press 'i' for iOS
# Check Firebase emulators
firebase emulators:start --only auth,firestore,storage --project demo-communexus# Clean and rebuild
rm -rf node_modules dist ios/build
npm install
npx expo prebuild --clean
npx expo run:ios# Kill existing emulators
pkill -f firebase
# Restart
firebase emulators:start --only auth,firestore,storage --project demo-communexus- Firebase Security Rules configured
- API keys secured in environment variables
- User data isolated per account
- Storage access restricted to authenticated users
- Issues: GitHub Issues
- Documentation: See
/docs/and/specs/ - Memory Bank: Project context in
/memory-bank/
Built with β€οΈ for contractors and service professionals
π Streamlining project communication, one message at a time.