A full-stack application for real-time Indian Sign Language (ISL) translation using keypoints and deep learning with Firebase Authentication. This repo contains:
- backend_service: Django REST API for user, transaction, and API endpoints
- ml_service: FastAPI microservice for gesture prediction using keypoints and a trained model
- islTranslatorApp: React Native mobile app for live sign/spoken language translation
IMPORTANT: Before running the application, you must set up Firebase Authentication.
- Go to Firebase Console
- Create a new project or select existing one
- Enable Authentication → Sign-in method → Email/Password
- In Firebase Console, go to Project Settings → Your apps
- Add Android app with your package name:
com.isltranslatorapp - Download
google-services.jsonand place it in:islTranslatorApp/android/app/google-services.json
- In Firebase Console, go to Project Settings → Service accounts
- Click Generate new private key
- Download the JSON file and save as
firebase-service-account.jsonin:backend_service/firebase-service-account.json
Create .env files in the following locations:
React Native App (islTranslatorApp/.env):
FIREBASE_API_KEY=your_api_key_here
FIREBASE_AUTH_DOMAIN=your_project.firebaseapp.com
FIREBASE_PROJECT_ID=your_project_id
FIREBASE_STORAGE_BUCKET=your_project.appspot.com
FIREBASE_MESSAGING_SENDER_ID=your_sender_id
FIREBASE_APP_ID=your_app_idDjango Backend (backend_service/.env):
FIREBASE_SERVICE_ACCOUNT_PATH=firebase-service-account.json
SECRET_KEY=your_django_secret_key
DEBUG=True- Python 3.8+
- Node.js & npm
- Android Studio (for Android) or Xcode (for iOS)
- Java (for Android builds)
- MediaPipe (for keypoint extraction)
- Firebase project (see setup above)
Setup:
- Open a terminal and navigate to the backend directory:
cd backend_service- Create a virtual environment and activate it:
python -m venv env
source env/bin/activate # On Windows: env\Scripts\activate- Install requirements:
pip install -r requirements.txtRun the server (from backend_service directory):
python manage.py runserver 0.0.0.0:8000- The API will be available at
http://0.0.0.0:8000/ - Main endpoints:
/api/predict/,/api/transactions/, etc.
Setup:
- Place
isl_sign_language_model.h5andisl_label_map.pklin theml_servicedirectory (not inside the innerml_service/ml_service). - Open a terminal and navigate to the ml_service directory:
cd ml_service- Create a virtual environment and activate it:
python -m venv env
source env/bin/activate # On Windows: env\Scripts\activate- Install requirements:
pip install -r requirements.txtRun the ML service (from ml_service directory):
uvicorn ml_service.main:app --host 0.0.0.0 --port 8001- The ML API will be available at
http://0.0.0.0:8001/ - Test with
/healthand/predictendpoints.
Note: This app is currently supported for Android only.
Setup:
- Open a terminal and navigate to the app directory:
cd islTranslatorApp- Install dependencies:
npm installStart Metro bundler (from islTranslatorApp directory):
npx react-native startRun on Android (from islTranslatorApp directory):
- Connect your Android device via USB (enable Developer Mode and USB Debugging)
- Or connect via WiFi using adb:
- Connect your phone and PC to the same WiFi network.
- Connect your phone via USB and run:
adb devices adb tcpip 5555 adb connect <PHONE_IP>:5555 adb devices
- You should see your device listed.
- Then run:
npx react-native run-androidTroubleshooting device connection:
- Use
adb devicesto check if your device is detected. - If not, check USB cable, drivers, or WiFi connection.
- Start all services as described above (each from its own directory)
- Open the React Native app on your device
- Sign up/Sign in using Firebase Authentication
- Use the app to capture sign language (camera) or type spoken language
- Check transaction history in the app
- ✅ Email/Password Authentication via Firebase
- ✅ User Registration with display name
- ✅ Secure Login with error handling
- ✅ Token-based Authentication with Django backend
- ✅ User Session Management
- ✅ Password Visibility Toggle
- ✅ Input Validation and error messages
- "Firebase not initialized": Check
google-services.jsonis in correct location - "Invalid credentials": Verify Firebase project settings and API keys
- "Network error": Check internet connection and Firebase project status
- Model or label map not loaded: Ensure
.h5and.pklfiles are in the correct directory - Always same prediction: Make sure you are sending real keypoints, not random data
- Broken pipe errors: Usually harmless, but check for network issues if predictions fail
- Metro/React Native errors: Restart Metro with
npx react-native start --reset-cache
- Never commit
google-services.json,firebase-service-account.json, or.envfiles - These files are already in
.gitignorefor protection - Keep your Firebase API keys secure and rotate them if compromised
isl/
├── backend_service/ # Django REST API
│ ├── backend_service/ # Django project settings
│ ├── mlapi/ # Django app with models/views
│ ├── firebase-service-account.json # Firebase credentials (not in git)
│ └── .env # Environment variables (not in git)
├── ml_service/ # FastAPI ML service
│ ├── ml_service/ # FastAPI app
│ ├── isl_sign_language_model.h5 # ML model (not in git)
│ └── isl_label_map.pkl # Label mapping (not in git)
└── islTranslatorApp/ # React Native app
├── android/app/google-services.json # Firebase config (not in git)
├── src/contexts/AuthContext.js # Authentication context
├── screens/ # App screens
└── .env # Environment variables (not in git)