Properties
title: Services, APIs & Vendors aliases: [Vendor Inventory, API Inventory] tags: [3netra/wiki, vendors, apis, services] product: 3netra Meta Android App source_repository: 3Netra-ai/3n_meta_android source_ref: origin/prod source_revision: b48aada8fd5427b5db0c02945569963c4ae543c8 last_verified: 2026-08-06 up: "[[Home]]"
Services, APIs & Vendors
Vendor Inventory
Warning
Audit correction
A listed vendor is not proof of an operational integration. In particular, the active app calls Supabase chat-vision (not the AWS client) and discards its returned model text; Sarvam has no end-to-end test; and the DAT gesture bridge is not present. The table records source inventory, with this correction taking precedence over legacy checkmarks.
| Vendor | Purpose | Endpoint / Transport | Auth / Key source | Status |
|---|---|---|---|---|
| Meta (Wearables DAT SDK) | Registration, device state, camera capture API | DAT SDK / Bluetooth | Manifest meta-data resolves from Gradle resources; fallback values are committed in app/build.gradle (rotate/remove) |
🟡 code path; no hardware verification or gesture callback registration |
| Supabase | Auth (GoTrue), Postgres (PostgREST), Realtime | BuildConfig.SUPABASE_URL |
SUPABASE_ANON_KEY |
✅ primary |
| OpenAI | Edge Function implementation requests gpt-4o |
Supabase chat-vision Edge Function |
Edge-function environment variable | 🟡 app invokes it, but client discards its reply |
| AWS | Unreferenced SAM prototype: Lambda/API Gateway/S3/Rekognition | AwsBackendService / /api/* |
Build config + SAM parameters | 🟡 source exists; no production app call site |
| Sarvam.ai | Indic translation, TTS (speaker "meera"), STT (model "saaras:v1") | https://api.sarvam.ai/translate, /text-to-speech, /speech-to-text |
SARVAM_API_KEY (Bearer + api-subscription-key) |
✅ voice |
| Google Identity | Sign-In (Credential Manager bottom sheet → ID token → Supabase IDToken auth) | play-services-auth / credentials API | GOOGLE_WEB_CLIENT_ID |
✅ auth |
| TensorFlow Lite (LiteRT) | FaceNet embedding calculation | In-process; asset facenet.tflite |
n/a | 🟡 embedding store/read path is Supabase, not local-only |
| Ollama (LAN) | Legacy/local VLM client | Hardcoded private-LAN endpoint in VisionService |
none | ❌ no active production call site |
| Resend | Welcome/notification emails | Firebase Functions + Vercel function | RESEND_API_KEY / functions config |
🟡 legacy |
| Firebase | Cloud Functions (email triggers) only — auth/data removed | n/a | n/a | 🟡 legacy |
| Vercel | api/send-welcome.js serverless (project 3netra) |
vercel.app | env | 🟡 legacy |
| Android platform | TextToSpeech, SpeechRecognizer (voice commands, dictation), CameraX (face registration), BLE APIs, EncryptedSharedPreferences | on-device | n/a | ✅ |
| Google ML Kit face-detection | Declared in build.gradle | — | — | ❌ unused |
Client BuildConfig Keys (names only)
| Key | Used by |
|---|---|
SUPABASE_URL, SUPABASE_ANON_KEY |
SupabaseService |
AWS_BACKEND_URL |
AwsBackendService only; no production caller at this ref |
SARVAM_API_KEY |
SarvamService |
GOOGLE_WEB_CLIENT_ID |
GoogleAuthHelper |
OPENAI_API_KEY |
Defined but unreferenced in Android code (remove from client build inputs) |
GITHUB_ACTOR, GITHUB_TOKEN (env) |
Meta SDK Maven resolution |
All sourced from src/frontend/local.properties with env fallback. No local.properties.example exists.
App Service Layer (Kotlin singletons)
| Service | Responsibility | External deps |
|---|---|---|
BluetoothService |
Callable mode handlers, capture/AI invocation, chat history, DAT state observation | Meta SDK, Sarvam, Supabase AI, Supabase |
WearableCameraService |
MWDAT camera session → photo bytes (mutex-guarded) | Meta SDK |
SupabaseAiService |
Active chat-vision caller; incorrectly returns fixed success text instead of decoding the response |
Supabase Functions |
AwsBackendService |
/api/chat client with retry logic; unreferenced by production app code |
AWS Lambda |
SupabaseService |
Auth (email/OTP/Google), profiles, settings, sessions, face embeddings, Realtime | Supabase |
SupabaseDashboardRepository |
Settings/audit repository methods; no active dashboard/role flow verified | Supabase |
SarvamService |
translateText / textToSpeech / speechToText | Sarvam.ai |
VisionService |
Legacy VLM router (Ollama moondream/llava; GPT4_VISION enum) | Ollama LAN |
FaceNetModel |
TFLite embeddings + cosine similarity | LiteRT |
VoiceCommandService |
Foreground mic service, BT SCO, broadcasts VOICE_COMMAND |
Android SpeechRecognizer |
AudioTranscriptionService |
Continuous lecture dictation | Android SpeechRecognizer |
EmotionDetectionService / HallwayNavigationService / RecessSocialService |
Mode-specific prompt wrappers (concise, word-limited) | SupabaseAiService; no active student route for hallway/recess |
EmergencyAlertManager |
SOS → Supabase emergency_alerts |
Supabase |
ChildVoicePersonaManager |
Scene-screen Android TTS with legacy K–6 vocabulary filtering | Android TTS |
PinManager |
Teacher PIN (BCrypt in secure prefs) | jbcrypt |
SmartCaptureController |
Adaptive capture intervals (battery saver) | — |
MetaWearableService |
Placeholder stub (no real SDK calls) | — |
Utils: EncryptedFaceStorageManager, MediaCompressor, PdfExportManager |
Unused encrypted-face utility · pre-upload compression · legacy external-storage PDF writer | androidx.security / Android |
API Endpoints Summary
| Endpoint | Method | Payload | Returns |
|---|---|---|---|
Supabase Function chat-vision |
invoke | {prompt, mediaType, frames[]} |
Function returns {message}, but Android client presently discards it |
{AWS_BACKEND_URL}/api/chat |
POST | {prompt, mediaType: NONE/IMAGE/VIDEO, frames[]} |
{message}; implemented but not used by production callers |
{AWS_BACKEND_URL}/api/vision |
POST | {image_base64} |
{labels[]} (Rekognition) |
{AWS_BACKEND_URL}/api/upload |
POST | {image_base64} |
S3 file ref |
{AWS_BACKEND_URL}/api/auth |
POST | {access_token} |
{user} (Supabase verify) |
api.sarvam.ai/translate |
POST | {input, source_language_code, target_language_code} |
translated text |
api.sarvam.ai/text-to-speech |
POST | {text, speaker: meera, …} |
base64 audios[] |
api.sarvam.ai/speech-to-text |
POST multipart | audio, model: saaras:v1 |
transcript |
| Supabase PostgREST | — | client references user_profiles, students, student_settings, sessions, face_embeddings, audit_logs, and emergency_alerts; server schema/policies are not committed |
— |
Tip
Navigation ⬅️ 06-Feature-Matrix · 🏠 Home · ➡️ 08-Data-Model-Supabase
