Pular para o conteúdo

App mobile (B2B): Android, white-label, offline-friendly

O Studeia tem app mobile B2B nativo (React Native/Expo SDK 52, Android): auth Supabase, SSO via deep link, white-label dinâmico, push, cursos, quizzes, tutor IA, avatar e gamificação.

2026-05-31 6 min
Resposta curta

O Studeia inclui um app mobile B2B nativo feito com React Native/Expo (SDK 52), publicado para Android. Autentica via Supabase (Bearer JWT), suporta SSO por deep link, aplica o tema white-label de cada instituicao dinamicamente e expoe ~47 endpoints /api/mobile/* com shape simplificado, cobrindo cursos, aulas, quizzes, assignments, chat do tutor IA, notas, aulas ao vivo, gamificacao, certificados, push e o avatar falante. iOS esta no roadmap.

Arquitetura

  • Stack: React Native + Expo Router v4 (file-based), NativeWind v4, TanStack Query, Zustand, expo-secure-store. Monorepo via pnpm (node-linker=hoisted).
  • Auth: Supabase com AsyncStorage; o app envia Bearer JWT para uma superficie dedicada /api/mobile/* (~47 endpoints) que retorna shapes simplificados e planos.
  • White-label: um ThemeProvider dinamico le o tema do tenant em /api/mobile/me apos o login; o branding pre-login vem do endpoint publico /api/mobile/tenant-branding.
  • OTA updates: expo-updates com runtimeVersion fixado na versao do SDK; um AppVersionGate pode forcar atualizacao quando o build instalado esta abaixo de um minimo configurado.

O que tem no app

AreaTelas
Aprendizadodashboard, cursos (lista + catalogo + detalhe), viewer de aula, progresso
Avaliacaoquiz player nativo, envio de assignment
Tutorchat do tutor IA (SSE), avatar falante (WebView), avisos de quarentena/safety
Socialmensagens diretas, foruns (forum → thread → reply), anuncios, materiais do curso
GamificacaoXP/nivel/streak, badges, leaderboard, contests, rewards shop
Registrosnotas, certificados, notificacoes (lista + mark read)
Ao vivoaulas ao vivo (WebView), calendario

SSO no mobile

A rota /api/auth/sso/[tenantSlug] aceita um deep link redirect=studeia://...; o callback emite um 302 para studeia://auth/callback#access_token=...&refresh_token=.... Um listener Linking no auth provider chama supabase.auth.setSession(), e a tela de SSO usa uma sessao de browser in-app para o foco retornar ao app.

Modelo de seguranca

Os endpoints mobile reutilizam os mesmos guards de autorizacao da web: guards de acesso a forum/thread, acesso a aula (publicacao + prerequisito + matricula), anexos de assignment em bucket privado com prefixo validado, e sanitizacao de HTML server-side antes de qualquer render em WebView (WebViews rodam com origin whitelist estrita e JS desabilitado quando possivel).

Avatar no mobile

O avatar falante roda numa WebView que carrega a mesma pagina /avatar-embed usada na web (sem modulos WebRTC nativos no Expo); uma bridge React Native encaminha as mensagens de controle.

Roadmap

iOS ainda nao foi publicado — requer conta Apple Developer e um build EAS dedicado.

Veja tambem

FAQ

O Studeia tem app mobile para alunos?

Sim — um app B2B nativo feito com React Native/Expo (SDK 52), publicado para Android. Autentica via Supabase (Bearer JWT), suporta SSO por deep link e aplica o tema white-label de cada instituicao dinamicamente apos o login. iOS requer conta Apple Developer e build dedicado (roadmap).

O app mobile e white-label por instituicao?

Sim. Apos o login o app chama /api/mobile/me e aplica o tema do tenant (cores, logo, nome) via ThemeProvider mobile. Antes do login, ele pre-visualiza o branding pelo endpoint publico /api/mobile/tenant-branding usando o ultimo slug, entao o aluno ve a identidade da escola, nao uma casca generica do Studeia.

O que o aluno faz no app?

Dashboard, catalogo e detalhe de curso, viewer de aula, quiz player nativo, envio de assignment, chat do tutor IA via SSE, notas, aulas ao vivo (WebView), calendario, mensagens diretas, foruns, materiais do curso, gamificacao (XP, badges, leaderboard, contests, rewards shop), certificados, progresso, push notifications e o avatar falante do tutor IA.

Veja tambem

App mobile (B2B): Android, white-label, offline-friendly | Studeia Docs