Skip to main content

Employee App Setup

This guide covers setting up the Open Core Employee App for development and production deployment.

Requirements

Development Environment

RequirementVersionNotes
Flutter SDK3.8.1+3.9.2+ recommended
Android SDKAPI 26+Android 8.0 minimum
iOS SDKLatestFor iOS builds (macOS only)
Java17+Required for Android builds
NDK27.0.12077973For native components

Backend Requirements

  • Open Core Business Suite backend running and accessible
  • API endpoint URL (e.g., https://your-domain.com/api/V1/)
  • Firebase project configured for push notifications

Setup Steps

1. Clone Repository

git clone <repository-url>
cd apps/open_core_employee_app

2. Install Dependencies

flutter pub get

3. Configure Firebase

  1. Create a Firebase project at Firebase Console
  2. Add an Android app with your package name
  3. Download google-services.json
  4. Place it in android/app/google-services.json
  5. For iOS, download GoogleService-Info.plist and add to ios/Runner/

Update lib/firebase_options.dart with your Firebase configuration:

static const FirebaseOptions android = FirebaseOptions(
apiKey: 'YOUR_API_KEY',
appId: 'YOUR_APP_ID',
messagingSenderId: 'YOUR_SENDER_ID',
projectId: 'YOUR_PROJECT_ID',
storageBucket: 'YOUR_STORAGE_BUCKET',
);

4. Configure API Base URL

Update the API base URL in lib/api/api_routes.dart:

class ApiRoutes {
// For local development
static const baseURL = "http://192.168.1.x:44313/api/V1/";

// For production
// static const baseURL = "https://your-domain.com/api/V1/";
}

5. Generate Code

The app uses MobX for state management and Hive for local storage. Generate required code:

dart run build_runner build --delete-conflicting-outputs

For continuous code generation during development:

dart run build_runner watch --delete-conflicting-outputs

6. Run the App

# Run in debug mode
flutter run

# Run on specific device
flutter run -d <device_id>

# List available devices
flutter devices

Production Build

Android APK

# Build release APK
flutter build apk --release

# Build split APKs by ABI (smaller file sizes)
flutter build apk --release --split-per-abi

Output: build/app/outputs/flutter-apk/app-release.apk

Android App Bundle (for Play Store)

flutter build appbundle --release

Output: build/app/outputs/bundle/release/app-release.aab

iOS Build

# Build iOS release
flutter build ios --release

# Open in Xcode for archive and distribution
open ios/Runner.xcworkspace

Customization

App Branding

  1. App Name: Update in android/app/src/main/AndroidManifest.xml and ios/Runner/Info.plist
  2. Package Name: Update in android/app/build.gradle (applicationId)
  3. App Icons: Replace icons in android/app/src/main/res/ and use flutter_launcher_icons

Theme Colors

Update colors in lib/utils/app_colors.dart:

class AppColors {
static const Color primary = Color(0xFF696CFF);
static const Color primaryDark = Color(0xFF5457E6);
// Add your brand colors
}

Troubleshooting

Common Issues

Build fails with code generation errors

flutter clean
flutter pub get
dart run build_runner build --delete-conflicting-outputs

Firebase not initialized

Ensure google-services.json is in the correct location and Firebase is initialized in main.dart.

API connection issues

  1. Verify backend is running and accessible
  2. Check API base URL configuration
  3. Ensure device/emulator can reach the backend network

Permission issues on Android

The app requires location permissions for attendance. Ensure these are declared in AndroidManifest.xml:

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

Next Steps