Psyter Android Client Application

Version: 2.0.15 (Build 50)
Package: com.psyter.www
Platform: Android 5.0+ (API 21+)
Target SDK: 33 (Android 13)
Last Updated: November 6, 2025


๐Ÿ“ฑ Overview

The Psyter Android Client application is a mental health telemedicine platform that connects patients with healthcare providers. It enables users to:
- Search and book appointments with mental health professionals
- Conduct secure video/audio consultations via WebRTC
- Manage their mental health journey (diary, homework, questionnaires)
- Process payments securely
- Receive push notifications for appointments and messages
- Access educational content and resources


โœจ Key Features

Patient Features

  • โœ… User Registration & Authentication - Email/phone-based registration with OTP verification
  • โœ… Google & Apple Sign-In - Social authentication support
  • โœ… Provider Search & Filtering - Find care providers by specialty, language, availability
  • โœ… Appointment Booking - Calendar-based slot selection with payment integration
  • โœ… Video Consultations - Real-time video/audio calls using WebRTC
  • โœ… Secure Messaging - Chat with care providers
  • โœ… Mental Health Diary - Private journaling feature
  • โœ… Homework Management - Complete assignments from providers
  • โœ… Questionnaires - Mental health screening assessments
  • โœ… Payment Integration - Wallet and direct payment options
  • โœ… Push Notifications - Appointment reminders and message alerts
  • โœ… Multi-language Support - English and Arabic (RTL support)
  • โœ… Offline Support - WorkManager for background tasks

Technical Features

  • ๐Ÿ”’ Firebase Integration - Auth, FCM, Crashlytics, Analytics
  • ๐Ÿ“น WebRTC Video Calls - Peer-to-peer video/audio communication
  • ๐Ÿ”Œ WebSocket Support - Real-time presence and messaging
  • ๐Ÿ’ณ Payment Gateway - STS Payment integration
  • ๐Ÿ“„ PDF Viewer - View prescriptions and documents
  • ๐Ÿ”” Background Processing - WorkManager for notifications

๐Ÿ› ๏ธ Technology Stack

Core Technologies

  • Language: Java
  • Min SDK: 21 (Android 5.0 Lollipop)
  • Target SDK: 33 (Android 13)
  • Compile SDK: 33
  • Build Tools: Gradle 7.x
  • Architecture: MVC with Repository Pattern

Major Dependencies

AndroidX Libraries

androidx.appcompat:appcompat:1.1.0
androidx.constraintlayout:constraintlayout:1.1.3
androidx.navigation:navigation-fragment:2.5.0
androidx.navigation:navigation-ui:2.5.0
androidx.work:work-runtime-ktx:2.7.0
androidx.swiperefreshlayout:swiperefreshlayout:1.0.0
com.google.android.material:material:1.2.0-alpha06

Firebase Services

com.google.firebase:firebase-messaging:15.0.0
com.google.firebase:firebase-auth:22.1.1
com.google.firebase:firebase-crashlytics:18.4.1
com.google.firebase:firebase-analytics:21.3.0

Video & Real-time Communication

org.webrtc:google-webrtc:1.0.28513
com.neovisionaries:nv-websocket-client:2.3

Networking & Data

com.amitshekhar.android:android-networking:1.0.2
com.google.code.gson:gson:2.8.5
com.loopj.android:android-async-http:1.4.9

UI/UX Libraries

com.github.bumptech.glide:glide:4.10.0
de.hdodenhof:circleimageview:2.1.0
com.squareup.picasso:picasso:2.4.0
com.github.GrenderG:Toasty:1.4.0
com.github.ybq:Android-SpinKit:1.4.0
com.crystal:crystalrangeseekbar:1.1.3

Document & Media

com.github.barteksc:android-pdf-viewer:2.8.2
io.github.ponnamkarthik:richlinkpreview:1.0.9

Authentication

com.google.android.gms:play-services-auth:20.4.0
com.github.aabhasr1:OtpView:v1.1.2
nu.aaro.gustav:passwordstrengthmeter:0.4

๐Ÿ“‹ Prerequisites

Development Environment

  • Android Studio: Arctic Fox (2020.3.1) or later
  • JDK: JDK 8 (1.8) or later
  • Gradle: 7.0+
  • NDK: 23.1.7779620 (for WebRTC native libraries)

Required SDKs & Tools

  • Android SDK Platform 33
  • Android SDK Build-Tools 33.x.x
  • Google Play Services
  • Android Support Repository
  • Google Repository

Optional Tools

  • Android Emulator with Google Play (for Firebase testing)
  • Physical Device (recommended for video call testing)
  • Charles Proxy / Proxyman (for network debugging)

๐Ÿš€ Setup Instructions

1. Clone the Repository

# Clone the main project
git clone <repository-url>
cd Psyter/Android

2. Configure Firebase

Development Environment

  1. Download google-services.json from Firebase Console (psyterdev project)
  2. Place it in Android/app/ directory
  3. Ensure applicationId matches: com.psyter.www

Production Environment

  1. Use production Firebase project configuration
  2. Replace google-services.json with production file

Firebase Services Used:
- Firebase Authentication (Email/Phone)
- Firebase Cloud Messaging (FCM)
- Firebase Crashlytics
- Firebase Analytics

3. Configure Build Variants

The app has commented build configurations in app/build.gradle. Update based on your environment:

For Development:

buildTypes {
    debug {
        buildConfigField "String", "BaseURL", "\"https://dev2.innotech-sa.com/Psyter/Master/APIs/\""
        buildConfigField "String", "BaseURLScheduling", "\"https://team-server.innotech-sa.com/Scheduling/SchedulingAPI/\""
        buildConfigField "String", "AppToken", "\"f97f3496-a2c8-4c20-84ef-b5a8e6388038\""
        // Add other configurations
    }
}

For Production:
- Edit Utils.java and set isLive = true
- Verify URLs point to production servers
- Ensure AppToken is set to production value

4. Install Dependencies

# Open Android Studio and let it sync Gradle
# Or use command line:
./gradlew build --refresh-dependencies

5. Update API Endpoints (if needed)

Edit Android/app/src/main/java/com/psyter/www/Stats/Utils.java:

// For production
public static boolean isLive = true;
public static String BaseURL = "https://webapis.psyter.com/";
public static String BaseURLScheduling = "http://scheduling.innotech-sa.com/";
public static String AppToken = "9ae12b99-d42f-4006-81d4-87687e64dc32";

// For development
public static boolean isLive = false;
public static String BaseURL = "https://dev2.innotech-sa.com/Psyter/Master/APIs/";
// ... other dev URLs

6. Configure WebSocket Server

Edit WebSocket connection settings in relevant collaboration classes or configuration:
- Development: wss://dev-server.innotech-sa.com:3333
- Production: wss://production-server.psyter.com:3333

7. Build the Project

Debug Build (Development)

./gradlew assembleDebug

Release Build (Production)

# Generate signed APK
./gradlew assembleRelease

# Or use Android Studio:
# Build > Generate Signed Bundle / APK

Note: Release builds require:
- Keystore file for signing
- Keystore password
- Key alias and password
- ProGuard configuration (already included)


๐Ÿƒ Running the Application

On Emulator

# Start emulator
emulator -avd <AVD_NAME>

# Install and run
./gradlew installDebug
adb shell am start -n com.psyter.www/.Registration.Activities.SplashActivity

On Physical Device

# Enable USB Debugging on device
# Connect device via USB

# Install
./gradlew installDebug

# Run from Android Studio (recommended for debugging)

Required Permissions (Runtime)

The app will request these permissions at runtime:
- โœ… Camera (for video calls)
- โœ… Microphone (for audio calls)
- โœ… Storage (for file uploads/downloads)
- โœ… Notifications (for push notifications)
- โœ… System Alert Window (for incoming call overlay)


๐Ÿ“ Project Structure

Android/
โ”œโ”€โ”€ app/
โ”‚   โ”œโ”€โ”€ src/
โ”‚   โ”‚   โ”œโ”€โ”€ main/
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ java/com/psyter/www/
โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ CareProvider/          # Provider-specific features (mostly unused in client app)
โ”‚   โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ Activities/
โ”‚   โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ Fragments/
โ”‚   โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ Adapters/
โ”‚   โ”‚   โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ DataModels/
โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ Client/                # Patient/Client features
โ”‚   โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ Activities/        # HomeWorkSubmit, PaymentWeb, PDFViewer, etc.
โ”‚   โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ Fragments/         # FindCP, MyCPs, Diary, Homework, Profile
โ”‚   โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ BookSlots/         # Appointment booking flow
โ”‚   โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ Adapters/
โ”‚   โ”‚   โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ DataModels/
โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ CommonUser/            # Shared client/provider features
โ”‚   โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ Activities/        # CarePList, CarePDetail, ForgotPassword
โ”‚   โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ Adapters/
โ”‚   โ”‚   โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ DataModel/
โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ Registration/          # Auth & onboarding
โ”‚   โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ Activities/        # Splash, Login, Register, Questionnaire
โ”‚   โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ Adapters/
โ”‚   โ”‚   โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ DataModel/
โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ Collaboration/         # WebRTC video calls
โ”‚   โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ Presence/          # CollaborationMain, IncomingCall, WebSocket
โ”‚   โ”‚   โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ Common/            # WebRTC helpers, models
โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ Scheduling/            # Appointment scheduling
โ”‚   โ”‚   โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ WeeklySchedule/
โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ Stats/                 # Utilities & helpers
โ”‚   โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ Utils.java         # Constants, URLs, API endpoints
โ”‚   โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ MySharedPreferences.java  # Local storage
โ”‚   โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ LocaleUtils.java   # Localization
โ”‚   โ”‚   โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ ...
โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ views/                 # Custom views & fragments
โ”‚   โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ activity/          # RegisterActivity, OnboardingActivity
โ”‚   โ”‚   โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ fragments/         # Registration flow fragments
โ”‚   โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ workers/               # WorkManager tasks
โ”‚   โ”‚   โ”‚   โ”‚       โ”œโ”€โ”€ AlarmWorkManager.java
โ”‚   โ”‚   โ”‚   โ”‚       โ””โ”€โ”€ ...
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ res/
โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ layout/                # XML layouts
โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ drawable/              # Images, icons
โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ values/                # Strings, colors, dimensions
โ”‚   โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ values-ar/             # Arabic translations
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ assets/                    # Static files
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ AndroidManifest.xml        # App configuration
โ”‚   โ”‚   โ””โ”€โ”€ test/                          # Unit tests (minimal)
โ”‚   โ”œโ”€โ”€ libs/                              # Local AAR files
โ”‚   โ”œโ”€โ”€ build.gradle                       # App-level build configuration
โ”‚   โ”œโ”€โ”€ google-services.json               # Firebase configuration
โ”‚   โ””โ”€โ”€ proguard-rules.pro                 # Code obfuscation rules
โ”œโ”€โ”€ duo-navigation-drawer/                 # Navigation drawer library module
โ”œโ”€โ”€ intlphoneinput/                        # International phone input module
โ”œโ”€โ”€ gradle/                                # Gradle wrapper
โ”œโ”€โ”€ build.gradle                           # Project-level build configuration
โ”œโ”€โ”€ settings.gradle                        # Module settings
โ””โ”€โ”€ README.md                              # This file

๐Ÿ”‘ Key Classes & Components

Authentication & User Management

  • LoginActivity.java - User login with email/phone/Google/Apple
  • RegisterActivity.java - New user registration flow
  • RegisterBasicInfo.java - Registration step 1: Basic info
  • RegisterVerification.java - Registration step 2: OTP verification
  • MySharedPreferences.java - Local data persistence (user session, preferences)
  • Utils.java - Global constants, API endpoints, utility functions
  • BaseClientActivityMain.java - Main activity with bottom navigation (Client app)
  • BaseCarePActivityMain.java - Main activity for care providers (minimal use)
  • MainFragmentClient.java - Home screen fragment
  • FindCPFragment.java - Search care providers
  • MyCPFragment.java - My care providers list
  • MyProfileFragmentClient.java - User profile

Video Calls & WebRTC

  • CollaborationMain.java - WebRTC video call implementation
  • IncomingCall.java - Incoming call notification screen
  • ManagePresenceeClient.java - WebSocket presence management
  • WebAPICall.java - ICE server configuration

Appointment Booking

  • MonthViewClient.java - Calendar month view
  • SelectSlotActivity.java - Time slot selection
  • SlotPaymentSuggestActivity.java - Payment options
  • PaymentWebActivity.java - Payment gateway WebView

Features

  • MyDiaryFragment.java - Mental health diary
  • MyHomeWorkFragment.java - Homework assignments
  • MyQyestionaireFragment.java - Questionnaires/assessments
  • CarePListActivity.java - Care provider listing with filters
  • CarePDetailActivity.java - Provider profile with YouTube bio

Firebase Services

  • MyFirebaseMessagingService.java - FCM push notification handler
  • AlarmWorkManager.java - Background notification scheduling

Utilities

  • TransparentProgressDialog.java - Loading dialogs
  • LocaleUtils.java - Language switching (English/Arabic)
  • LangHelper.java - RTL support
  • clsStoragePermission.java - Runtime permission handlers

๐Ÿ”ง Configuration Files

AndroidManifest.xml

Defines:
- App permissions (Camera, Mic, Storage, Network, etc.)
- Activities and their launch modes
- Firebase services
- Deep link handling (if configured)

build.gradle (app)

  • Build variants (debug/release)
  • Dependencies
  • ProGuard rules
  • Build configuration fields
  • Data binding enabled

google-services.json

  • Firebase project configuration
  • FCM sender ID
  • API keys (auto-configured by plugin)

proguard-rules.pro

  • Code obfuscation rules for release builds
  • Keep rules for models and libraries

๐Ÿ”’ Security Considerations

Current Implementation

  • โœ… HTTPS for all API calls
  • โœ… Bearer token authentication
  • โœ… Firebase Auth for user management
  • โœ… Certificate pinning potential (not currently implemented)
  • โš ๏ธ Passwords stored in SharedPreferences (should encrypt)
  • โš ๏ธ API tokens hardcoded in source (should use Build Config or secure vault)
  • โš ๏ธ No SSL pinning (vulnerable to MITM)

Recommendations

  1. Encrypt SharedPreferences - Use EncryptedSharedPreferences from Security-Crypto library
  2. Move secrets to BuildConfig - Remove hardcoded tokens from Utils.java
  3. Implement Certificate Pinning - Add OkHttp certificate pinner
  4. Add Root Detection - Check for rooted devices
  5. Obfuscate Release Builds - Ensure ProGuard is working correctly

๐Ÿงช Testing

Unit Tests

Currently minimal unit test coverage. Located in:

app/src/test/java/com/psyter/www/

To run:

./gradlew test

Instrumentation Tests

Located in:

app/src/androidTest/java/

To run:

./gradlew connectedAndroidTest

Manual Testing Checklist

  • User registration with email
  • User registration with phone + OTP
  • Login with credentials
  • Login with Google
  • Login with Apple (iOS only, but code present)
  • Search care providers
  • Filter providers (specialty, language, availability)
  • View provider profile
  • Book appointment
  • Process payment
  • Join video call
  • Camera/microphone toggle during call
  • Screen sharing (if supported)
  • Send/receive messages
  • Create diary entry
  • Complete homework assignment
  • Fill questionnaire
  • Receive push notifications
  • Language switching (EN โ†” AR)

๐Ÿ› Common Issues & Troubleshooting

Issue: Build fails with “Duplicate class” error

Solution: Clean and rebuild

./gradlew clean build

Issue: Firebase services not working

Solution:
1. Ensure google-services.json is in app/ directory
2. Verify applicationId matches Firebase project
3. Check build.gradle has apply plugin: 'com.google.gms.google-services' at the bottom

Issue: WebRTC video not showing

Solution:
1. Check camera/microphone permissions granted
2. Verify WebSocket connection to signaling server
3. Check ICE server configuration in WebAPICall.java
4. Test on physical device (emulator has limited WebRTC support)

Issue: App crashes on startup

Solution:
1. Check logcat for stack trace: adb logcat | grep AndroidRuntime
2. Verify Firebase Crashlytics for crash reports
3. Common causes:
- Missing permissions in manifest
- Network connectivity issues
- Invalid server URLs in Utils.java

Issue: Payment gateway not loading

Solution:
1. Check WebView permissions
2. Verify payment URL format in SlotPaymentSuggestActivity
3. Check network security config allows payment gateway domain
4. Test with development payment credentials first

Issue: Push notifications not received

Solution:
1. Verify FCM token generation in MyFirebaseMessagingService
2. Check token is sent to backend via API
3. Test with Firebase Console “Send test message”
4. Ensure app is not in Doze mode or battery optimization
5. Check notification channel creation (Android 8+)

Issue: Arabic (RTL) layout issues

Solution:
1. Ensure android:supportsRtl="true" in manifest
2. Use start/end instead of left/right in layouts
3. Check LocaleUtils.java for proper RTL configuration
4. Test with “Force RTL layout direction” in Developer Options

Issue: “NetworkOnMainThreadException”

Solution:
- All network calls should be on background thread
- Use AndroidNetworking library (already implemented)
- Check for any direct HttpURLConnection usage


๐Ÿ“Š Performance Optimization

Current Performance

  • App size: ~50-60 MB (with dependencies)
  • Cold start time: ~2-3 seconds
  • Memory usage: ~100-150 MB typical

Optimization Recommendations

  1. Enable R8/ProGuard - Reduce APK size by 30-40%
  2. Use App Bundle - Google Play dynamic delivery
  3. Lazy Load Images - Already using Glide with caching
  4. Optimize Layouts - Use ConstraintLayout, avoid nested layouts
  5. Reduce Dependencies - Remove unused libraries
  6. Enable Data Binding - Already enabled, use more widely
  7. Background Task Optimization - Use WorkManager (already implemented)

๐ŸŒ API Integration

Base URLs

  • Production API: https://webapis.psyter.com/
  • Production Web: https://www.psyter.com/
  • Scheduling API: http://scheduling.innotech-sa.com/
  • Development API: https://dev2.innotech-sa.com/Psyter/Master/APIs/

Authentication

// Example API call with authentication
AndroidNetworking.post(Utils.BaseURL + "endpoint")
    .addHeaders("Authorization", "Bearer " + Utils.TokenPsyter)
    .addHeaders("Content-Type", "application/json")
    .addJSONObjectBody(requestJson)
    .setPriority(Priority.HIGH)
    .build()
    .getAsJSONObject(new JSONObjectRequestListener() {
        @Override
        public void onResponse(JSONObject response) {
            // Handle response
        }

        @Override
        public void onError(ANError anError) {
            // Handle error
        }
    });

Key Endpoints (from Utils.java)

  • Auth: Authenticate
  • Registration: Patient/RegisterClient
  • Providers: ServiceProvider/GetServiceProviderListByCatalogueFilter
  • Booking: ServiceProvider/GetServiceProviderAvailableDates
  • Payment: Payment/InsertPayForData
  • Messaging: Collaboration/SendMessage
  • Notifications: Notification/SaveDeviceFcmToken

๐Ÿ”„ CI/CD & Deployment

Current State

  • CI/CD: Manual build and deployment
  • Distribution: Google Play Store + Direct APK distribution

Using GitHub Actions

name: Android CI

on:
  push:
    branches: [ main, develop ]
  pull_request:
    branches: [ main ]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v3
    - name: Set up JDK 11
      uses: actions/setup-java@v3
      with:
        java-version: '11'
        distribution: 'temurin'
    - name: Grant execute permission for gradlew
      run: chmod +x gradlew
    - name: Build with Gradle
      run: ./gradlew build
    - name: Run tests
      run: ./gradlew test
    - name: Upload APK
      uses: actions/upload-artifact@v3
      with:
        name: app
        path: app/build/outputs/apk/debug/app-debug.apk

Play Store Deployment

  1. Generate signed release bundle: ./gradlew bundleRelease
  2. Upload AAB to Play Console
  3. Update release notes
  4. Roll out to testing track โ†’ production

๐Ÿ“ Contributing Guidelines

Code Style

  • Follow Java naming conventions
  • Use meaningful variable names
  • Add comments for complex logic
  • Keep methods under 100 lines
  • Use Android Studio auto-formatting (Ctrl+Alt+L)

Git Workflow

  1. Create feature branch: feature/feature-name
  2. Make changes with clear commit messages
  3. Test thoroughly on device
  4. Create pull request with description
  5. Wait for code review
  6. Merge after approval

Pull Request Template

## Description
[Describe the changes]

## Type of Change
- [ ] Bug fix
- [ ] New feature
- [ ] Breaking change
- [ ] Documentation update

## Testing
- [ ] Unit tests added/updated
- [ ] Manual testing completed
- [ ] Tested on multiple devices/Android versions

## Screenshots (if UI changes)
[Add screenshots]

## Checklist
- [ ] Code follows project style guidelines
- [ ] Self-review completed
- [ ] Comments added for complex code
- [ ] No new warnings generated

๐Ÿ“š Additional Resources

Documentation

  • APIs: Backend REST API (ASP.NET)
  • NodeServer: WebSocket signaling server (Node.js)
  • Web: Web portal (ASP.NET MVC)
  • AndroidCareProvider: Provider mobile app

Support

  • Issue Tracker: [Link to issue tracker]
  • Wiki: [Link to project wiki]
  • Team Chat: [Link to Slack/Teams channel]

๐Ÿ”– Version History

v2.0.15 (Current - Build 50)

  • Current production version
  • Bug fixes and stability improvements

Previous Versions

  • See git tags for detailed version history

๐Ÿ“„ License

[Add license information]


๐Ÿ‘ฅ Maintainers

  • Android Team: [Team contact information]
  • Project Lead: [Lead contact]

Last Updated: November 6, 2025
Document Version: 1.0
Maintained By: Development Team