Skip to content

ImAzimm/Calm-Orb-Mobile-Apps

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

115 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐ŸŒŸ CalmOrb - Autism Support Ecosystem

React Native Expo Firebase TypeScript License

A comprehensive ecosystem combining community support platform and IoT-enabled stress monitoring for children with Autism Spectrum Disorder (ASD)


๐Ÿ“– Table of Contents


๐ŸŽฏ Overview

CalmOrb is a dual-component autism support system developed as a Final Year Project at Universiti Malaya. It addresses critical gaps in autism support services in Malaysia through two integrated solutions:

1. Mobile Community Platform (This Repository)

A React Native application connecting families, caregivers, and autism intervention centers through:

  • Discussion forums with AI-powered content moderation
  • Event discovery and management system
  • Center profiles and resource directory
  • Location-based services with interactive maps
  • Real-time community interaction

2. IoT Stress Monitoring System (Hardware Component)

A Raspberry Pi-based monitoring ecosystem featuring:

  • ESP32-powered interactive stress ball with pressure/motion sensors
  • Real-time environmental monitoring (noise, temperature, humidity)
  • AI-powered behavior detection using YOLOv8
  • BLE connectivity for mobile app integration
  • Visual and haptic feedback mechanisms

Together, these components provide holistic support for families navigating autism careโ€”combining peer support networks with intelligent emotional regulation tools.


๐Ÿ—๏ธ System Architecture

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                     CALMORB ECOSYSTEM                           โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚                                                                 โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”      โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”   โ”‚
โ”‚  โ”‚  Mobile App          โ”‚โ—„โ”€โ”€โ”€โ”€โ–บโ”‚  Firebase Backend        โ”‚   โ”‚
โ”‚  โ”‚  (React Native)      โ”‚      โ”‚  - Firestore DB          โ”‚   โ”‚
โ”‚  โ”‚  - Community         โ”‚      โ”‚  - Authentication        โ”‚   โ”‚
โ”‚  โ”‚  - Events            โ”‚      โ”‚  - Cloud Storage         โ”‚   โ”‚
โ”‚  โ”‚  - Child Monitor     โ”‚      โ”‚  - Real-time Sync        โ”‚   โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜      โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜   โ”‚
โ”‚             โ”‚                                                   โ”‚
โ”‚             โ”‚ BLE Connection                                    โ”‚
โ”‚             โ–ผ                                                   โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”‚
โ”‚  โ”‚  Raspberry Pi Hub                                        โ”‚  โ”‚
โ”‚  โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”‚  โ”‚
โ”‚  โ”‚  โ”‚ BLE Server โ”‚  โ”‚ Camera + AI  โ”‚  โ”‚ Environmental  โ”‚  โ”‚  โ”‚
โ”‚  โ”‚  โ”‚            โ”‚  โ”‚  (YOLOv8)    โ”‚  โ”‚   Sensors      โ”‚  โ”‚  โ”‚
โ”‚  โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ”‚  โ”‚
โ”‚  โ”‚        โ”‚                                                 โ”‚  โ”‚
โ”‚  โ”‚        โ”‚ WiFi AP (192.168.4.x)                          โ”‚  โ”‚
โ”‚  โ”‚        โ–ผ                                                 โ”‚  โ”‚
โ”‚  โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”‚  โ”‚
โ”‚  โ”‚  โ”‚  ESP32 Stress Ball                               โ”‚  โ”‚  โ”‚
โ”‚  โ”‚  โ”‚  - Pressure Sensor (FSR402)                      โ”‚  โ”‚  โ”‚
โ”‚  โ”‚  โ”‚  - Motion Sensor (MPU6050)                       โ”‚  โ”‚  โ”‚
โ”‚  โ”‚  โ”‚  - Audio Feedback (DFPlayer Mini)                โ”‚  โ”‚  โ”‚
โ”‚  โ”‚  โ”‚  - OLED Display                                  โ”‚  โ”‚  โ”‚
โ”‚  โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ”‚  โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ”‚
โ”‚                                                                 โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

โœจ Features

Community Platform Features

๐Ÿ’ฌ Discussion Forums

  • 7 Category System: Questions, Experiences, Resources, Success Stories, Support, General
  • AI Content Moderation: Real-time filtering using Google Gemini API
  • Nested Replies: Threaded conversations with proper chronological ordering
  • Rich Content: Image uploads, text formatting, and embedded media
  • Bookmarks: Save important discussions for later reference
  • Like & Engagement: Community interaction metrics

๐ŸŽช Event Management

  • Create & Manage Events: Full CRUD operations for autism centers
  • Event Types: Support for both online (meeting links) and in-person (map-based) events
  • Interactive Maps: Location picker with pinpoint accuracy and embedded previews
  • Registration System: Capacity limits, registration links, and RSVP tracking
  • Categorization: Workshops, Therapy Programs, Awareness Campaigns, Training, Support Groups
  • Date/Time Management: Start and end date handling with timezone support

๐Ÿข Center Profiles

  • Verified Accounts: Special authentication for autism intervention centers
  • Location Display: Embedded maps with "Open in Google Maps" functionality
  • Service Listings: Programs, therapies, and resources offered
  • Contact Information: Phone, email, website, and operating hours
  • Event History: View all events hosted by a center

๐Ÿ‘ค User Profiles

  • Role-Based Access: Different interfaces for parents/caregivers vs. centers
  • Profile Management: Edit personal information, profile pictures, and preferences
  • Activity Tracking: Post history, bookmarked discussions, registered events
  • Child Profiles: Manage multiple child profiles with detailed information

๐Ÿ“ Location Services

  • Interactive Map Picker: Drag-and-drop pinpoint selection
  • Reverse Geocoding: Automatic address lookup from coordinates
  • Map Previews: Embedded mini-maps in cards and detail views
  • Navigation Integration: Direct links to Google Maps for directions

IoT Monitoring Features

๐ŸŽฏ Stress Ball Monitoring

  • Pressure Detection: FSR402 sensor for squeeze intensity tracking
  • Motion Analysis: MPU6050 IMU for movement pattern recognition
  • Distress Alerts: Real-time notifications to caregivers
  • Feedback Mechanisms: Audio playback and OLED visual responses
  • Battery Monitoring: Low battery alerts and status display

๐ŸŽฅ AI Behavior Detection

  • YOLOv8 Integration: Custom-trained model for autism-specific behaviors
  • Real-time Processing: Camera feed analysis with configurable intervals
  • Behavior Categories: Aggression, self-harm, stimming, meltdown indicators
  • Privacy Controls: Local processing, no cloud upload of video

๐ŸŒก๏ธ Environmental Monitoring

  • Noise Levels: I2S microphone (INMP441) with dB measurement
  • Temperature & Humidity: DHT22 sensor readings
  • Ambient Conditions: Track environmental factors affecting child comfort
  • Historical Data: Timestamped logs for pattern analysis

๐Ÿ“ฑ Mobile Integration

  • BLE Connectivity: Low-power Bluetooth communication
  • Real-time Sync: Live data streaming to mobile app
  • Remote Control: Adjust settings and thresholds from app
  • Offline Mode: Local data logging when disconnected

๐Ÿ› ๏ธ Tech Stack

Mobile Application

Category Technology
Framework React Native 0.74
Runtime Expo SDK 51 (managed workflow)
Language TypeScript 5.3
State Management React Context API
Navigation React Navigation 6
Backend Firebase (Firestore, Auth, Storage)
Maps React Native Maps, Expo Location
AI Services Google Gemini API (content moderation)
Image Processing ImageKit, Expo Image Picker
Styling NativeWind (Tailwind CSS)
Charts react-native-gifted-charts
Icons Expo Vector Icons, Custom SVGs

Hardware System

Component Technology
Hub Raspberry Pi 4/5 (4GB RAM)
OS Raspberry Pi OS Bookworm (Debian 12)
Language Python 3.9+
Microcontroller ESP32 DevKit
AI Framework YOLOv8 (Ultralytics)
Computer Vision OpenCV
Communication BLE (Bleak library), WiFi AP, UDP
Display ILI9341 2.8" TFT (SPI)
Sensors FSR402, MPU6050, DHT22, INMP441

๐Ÿš€ Getting Started

Prerequisites

  • For Mobile App:

    • Node.js 18.x or higher
    • npm or yarn
    • Android Studio (for Android development)
    • Xcode (for iOS development, macOS only)
    • Expo CLI
    • Firebase account
  • For Hardware System:

    • Raspberry Pi 4/5 with 4GB RAM
    • MicroSD card (16GB+, Class 10)
    • ESP32 DevKit board
    • Required sensors and components (see Hardware Guide)
    • Python 3.9+

๐Ÿ“ฑ Mobile App Setup

1. Clone Repository

git clone https://github.com/yourusername/Calm-Orb-Mobile-Apps.git
cd Calm-Orb-Mobile-Apps

2. Install Dependencies

npm install
# or
yarn install

3. Install Firebase

npm install @react-native-firebase/app
# or
yarn add @react-native-firebase/app

4. Configure Firebase

โš ๏ธ IMPORTANT: See Firebase Setup Guide for complete, step-by-step instructions.

Quick Setup:

  1. Create a Firebase project at Firebase Console

  2. Download configuration files from Firebase Console:

    • google-services.json (Android)
    • GoogleService-Info.plist (iOS)
  3. Place files in project root (NOT in platform directories):

    • Calm-Orb-Mobile-Apps/google-services.json
    • Calm-Orb-Mobile-Apps/GoogleService-Info.plist

    โš ๏ธ Security Note: These files contain OAuth credentials and are protected by .gitignore. Never commit them to version control. Each developer must download their own from their Firebase project.

  4. Configure .env file (see step 8 below) with Firebase credentials

The firebaseConfig.js file is already configured to use environment variables from your .env file. No manual code changes needed.

5. Setup Android NDK (Android Only)

  1. Open Android Studio
  2. Go to SDK Manager โ†’ SDK Tools
  3. Install NDK (Side by side) version 25.2.9519653

6. Prebuild Native Code

npx expo prebuild

7. Run the App

First-time run (connects to physical device):

npx expo run:android --device
# or
npx expo run:ios --device

Subsequent runs:

npm start
# Press 's' to switch to development build
# Press 'a' for Android or 'i' for iOS

8. Configure Environment Variables

โš ๏ธ IMPORTANT: The .env file contains sensitive API keys and is protected by .gitignore. Never commit it to version control.

Setup:

# Copy the template
cp .env.example .env

# Edit .env and fill in your actual values

Required variables (get these from Firebase Console and Google Cloud):

# Firebase Configuration
EXPO_PUBLIC_FIREBASE_API_KEY=your_firebase_api_key
EXPO_PUBLIC_FIREBASE_AUTH_DOMAIN=your_project.firebaseapp.com
EXPO_PUBLIC_FIREBASE_PROJECT_ID=your_project_id
EXPO_PUBLIC_FIREBASE_STORAGE_BUCKET=your_project.firebasestorage.app
EXPO_PUBLIC_FIREBASE_MESSAGING_SENDER_ID=your_sender_id
EXPO_PUBLIC_FIREBASE_APP_ID=your_app_id
EXPO_PUBLIC_FIREBASE_MEASUREMENT_ID=your_measurement_id

# Google Gemini API (Content Moderation)
GEMINI_API_KEY=your_gemini_api_key

# Google Maps API (Location Services)
GOOGLE_MAPS_API_KEY=your_google_maps_api_key

# Expo EAS Project ID (auto-generated)
EXPO_PUBLIC_EAS_PROJECT_ID=your_eas_project_id

See Firebase Setup Guide for detailed instructions on obtaining these values.


๐Ÿ”ง Hardware System Setup

For detailed hardware setup instructions, see Hardware Setup Guide.

Quick Start Summary

  1. Flash Raspberry Pi OS using Raspberry Pi Imager
  2. Connect hardware components (sensors, display, camera)
  3. Clone Python codebase to Raspberry Pi
  4. Install dependencies via requirements.txt
  5. Configure system (WiFi, BLE, sensors)
  6. Enable systemd service for auto-start
  7. Connect mobile app via BLE scanning

Full step-by-step guide with troubleshooting: docs/hardware-setup.md


๐Ÿ“‚ Project Structure

Calm-Orb-Mobile-Apps/
โ”œโ”€โ”€ src/
โ”‚   โ”œโ”€โ”€ components/          # Reusable UI components
โ”‚   โ”‚   โ”œโ”€โ”€ Button.tsx
โ”‚   โ”‚   โ”œโ”€โ”€ DiscussionCard.tsx
โ”‚   โ”‚   โ”œโ”€โ”€ MapPicker.tsx
โ”‚   โ”‚   โ””โ”€โ”€ ...
โ”‚   โ”œโ”€โ”€ context/             # React Context providers
โ”‚   โ”‚   โ”œโ”€โ”€ AuthContext.tsx
โ”‚   โ”‚   โ””โ”€โ”€ MonitoringContext.tsx
โ”‚   โ”œโ”€โ”€ icons/               # Custom SVG icons
โ”‚   โ”œโ”€โ”€ screens/             # App screens/pages
โ”‚   โ”‚   โ”œโ”€โ”€ auth/            # Authentication screens
โ”‚   โ”‚   โ”œโ”€โ”€ community/       # Community features
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ discussions/
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ events/
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ center-management/
โ”‚   โ”‚   โ”œโ”€โ”€ monitoring/      # Child monitoring (BLE)
โ”‚   โ”‚   โ””โ”€โ”€ profile/
โ”‚   โ”œโ”€โ”€ services/            # API and external services
โ”‚   โ”‚   โ”œโ”€โ”€ api/
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ discussion.ts
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ events.ts
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ users.ts
โ”‚   โ”‚   โ””โ”€โ”€ notifications/
โ”‚   โ”œโ”€โ”€ utils/               # Helper functions
โ”‚   โ”‚   โ”œโ”€โ”€ colors.ts
โ”‚   โ”‚   โ”œโ”€โ”€ timeformat.ts
โ”‚   โ”‚   โ””โ”€โ”€ interfaces.ts
โ”‚   โ””โ”€โ”€ navigation/          # Navigation configuration
โ”œโ”€โ”€ assets/                  # Images, fonts, static files
โ”œโ”€โ”€ docs/                    # Documentation
โ”‚   โ”œโ”€โ”€ comments.md          # Code commenting guide
โ”‚   โ”œโ”€โ”€ icons.md             # Icon usage reference
โ”‚   โ”œโ”€โ”€ charts.md            # Chart data standards
โ”‚   โ”œโ”€โ”€ architecture.md      # System architecture
โ”‚   โ”œโ”€โ”€ api.md               # API documentation
โ”‚   โ”œโ”€โ”€ hardware-setup.md    # Hardware installation guide
โ”‚   โ””โ”€โ”€ deployment.md        # Deployment guide
โ”œโ”€โ”€ android/                 # Android native code
โ”œโ”€โ”€ ios/                     # iOS native code
โ”œโ”€โ”€ firebaseConfig.ts        # Firebase configuration
โ”œโ”€โ”€ app.json                 # Expo configuration
โ”œโ”€โ”€ package.json             # Dependencies
โ”œโ”€โ”€ tsconfig.json            # TypeScript config
โ””โ”€โ”€ README.md                # This file

โš™๏ธ Configuration

Firebase Security Rules

Ensure proper Firestore security rules are configured:

// firestore.rules
rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    // Users collection
    match /users/{userId} {
      allow read: if request.auth != null;
      allow write: if request.auth.uid == userId;
    }

    // Discussions collection
    match /discussions/{discussionId} {
      allow read: if request.auth != null;
      allow create: if request.auth != null;
      allow update, delete: if request.auth.uid == resource.data.userId;

      // Likes subcollection
      match /likes/{likeId} {
        allow read: if request.auth != null;
        allow write: if request.auth != null;
      }
    }

    // Events collection
    match /events/{eventId} {
      allow read: if request.auth != null;
      allow create: if request.auth != null && request.auth.token.role == 'center';
      allow update, delete: if request.auth.uid == resource.data.centerId;
    }

    // User bookmarks
    match /userBookmarks/{bookmarkId} {
      allow read, write: if request.auth != null;
    }
  }
}

App Configuration

Edit app.json for Expo configuration:

{
  "expo": {
    "name": "CalmOrb",
    "slug": "calmorb",
    "version": "1.0.0",
    "orientation": "portrait",
    "icon": "./assets/icon.png",
    "splash": {
      "image": "./assets/splash.png",
      "resizeMode": "contain",
      "backgroundColor": "#ffffff"
    },
    "plugins": [
      "@react-native-firebase/app",
      "expo-location",
      "expo-image-picker"
    ]
  }
}

๐ŸŽฎ Usage

For Parents/Caregivers

  1. Sign Up: Create account with email verification
  2. Complete Profile: Add child information and preferences
  3. Explore Community: Browse discussions, ask questions, share experiences
  4. Find Resources: Search for nearby autism centers and events
  5. Connect Hardware (optional): Pair Raspberry Pi hub via BLE for monitoring
  6. Monitor Child: Enable child profile to start stress ball monitoring

For Autism Centers

  1. Register as Center: Select center role during signup
  2. Complete Center Profile: Add location, services, contact details
  3. Create Events: Post workshops, therapy programs, and awareness campaigns
  4. Engage Community: Respond to questions and share resources
  5. Track Reach: Monitor event registrations and community engagement

For Developers

See Development Guide for:

  • Code style guide
  • Component development
  • State management patterns
  • Testing procedures
  • Git workflow

๐Ÿงช Development

Code Style

This project follows strict coding standards documented in:

Running Tests

# Unit tests
npm test

# E2E tests (if configured)
npm run test:e2e

Debugging

# Enable Expo dev tools
npm start

# Debug Android
npm run android:debug

# Debug iOS
npm run ios:debug

Linting & Formatting

# ESLint
npm run lint

# Prettier
npm run format

๐Ÿšข Deployment

Mobile App Deployment

Android (Google Play Store)

  1. Generate Release APK:
eas build --platform android --profile production
  1. Sign APK using your keystore

  2. Upload to Play Console

See Deployment Guide for detailed instructions.

iOS (App Store)

  1. Generate Release IPA:
eas build --platform ios --profile production
  1. Upload via App Store Connect

  2. Submit for review

Hardware System Deployment

The Raspberry Pi system is designed for continuous operation:

  1. Enable systemd service (auto-starts on boot)
  2. Configure WiFi for home/school network
  3. Set static IP (optional, for easier access)
  4. Enable SSH for remote management
  5. Setup backup cron jobs for data preservation

๐Ÿ“š Documentation

Comprehensive documentation available in /docs:

Document Description
Architecture System design and component interactions
API Reference Firebase Firestore collections and functions
Hardware Setup Complete IoT system installation guide
Code Comments Commenting standards and examples
Icons Guide Icon library reference
Chart Standards Data visualization conventions
Deployment Production deployment procedures
Development Developer onboarding and workflows

๐Ÿค Contributing

We welcome contributions from the community! Please follow these steps:

  1. Fork the repository
  2. Create feature branch: git checkout -b feature/YourFeature
  3. Follow code style: Review /docs/comments.md and existing patterns
  4. Write tests: Add unit tests for new features
  5. Commit changes: Use clear, descriptive commit messages
  6. Push to branch: git push origin feature/YourFeature
  7. Open Pull Request: Describe changes and reference issues

Contribution Guidelines

  • Follow existing file structure and naming conventions
  • Document all new functions and components
  • Maintain backward compatibility when possible
  • Update relevant documentation in /docs
  • Test on both Android and iOS before submitting

๐Ÿ› Troubleshooting

Common Issues

Firebase Connection Errors

Solution: Verify firebaseConfig.ts credentials and Firebase console settings

Map Not Displaying

Solution: Ensure Google Maps API key is configured in app.json

BLE Connection Failed

Solution: Check Bluetooth permissions and Raspberry Pi service status
sudo systemctl status distress.service

App Crashes on Startup

Solution: Clear cache and rebuild
npm start -- --reset-cache
npx expo prebuild --clean

Getting Help

  • Technical Issues: Open an issue on GitHub
  • Hardware Problems: See Hardware Troubleshooting
  • General Questions: Contact project maintainers

๐Ÿ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.


๐Ÿ™ Acknowledgments

This project was developed as a Final Year Project at Universiti Malaya, Faculty of Computer Science and Information Technology.

Academic Supervision

  • Dr. Nazean Binti Jomhari - Project Supervisor, FSKTM, Universiti Malaya
    • Academic guidance, technical direction, and research methodology

Stakeholder Collaboration

  • Mr. Xing Yiming - PhD Candidate, Faculty of Built Environment, Universiti Malaya
    • Requirements gathering, design validation, autism intervention expertise
  • Associate Professor Dr. Norhanim Binti Zakaria - Faculty of Built Environment, Universiti Malaya
    • Strategic guidance on therapeutic applications

Community Contributors

  • Parents and caregivers of children with ASD
  • Special education teachers
  • Autism center administrators
  • User testing participants

Technology & Services

  • Firebase by Google (backend infrastructure)
  • Google Gemini API (AI content moderation)
  • Expo (React Native framework)
  • ImageKit (media management)
  • React Native Maps (location services)
  • Ultralytics YOLOv8 (AI behavior detection)

Inspiration

This project is dedicated to families navigating autism care in Malaysia and worldwide. Your resilience and love inspire meaningful technology.


๐Ÿ“ž Contact

Project Maintainer: Abdul Azim Institution: Universiti Malaya Email: aabdulazim758@gmail.com GitHub: @ImAzimm


Built with โค๏ธ for the autism community in Malaysia

CalmOrb ยฉ 2025 | Final Year Project | Universiti Malaya

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •