Sageland — mobile (API + Expo)
Mobile Sageland
Decisão do Marcus (2026-07-17): app de consumo em Expo/React Native (não Flutter — stack TS única, Better Auth Expo, OTA via EAS). Compra NUNCA in-app — CTA de curso pago faz deep-link pro site (regra das lojas, preserva split 90/10 + Pix).
Feito (issues #12, #13, #15 ✅)
- API pública
/api/v1(Elysia): catálogo+busca, detalhe com estado por lição, exercícios com checagem de acesso, complete-lesson (scoring server-side compartilhado viapackages/db/src/learn.ts), me (stats+nível), minhas trilhas. Prod: serviçoapi(:3021), nginxlocation /api/v1. Validado curl em local+prod. - App Expo (
apps/mobile, SDK 57, expo-router, StyleSheet tokens da marca): login/signup (Better Auth expo client + secure store), tabs Aprender/Explorar/Perfil (nível+XP+ofensiva), trilha com estados, player quiz+flashcard postando pra API. Curso pago →Linking.openURL(purchaseUrl). Validado: bundle 1100 módulos, telas com a marca renderizando, login→/learn, e a cadeia nativa exata (cookie no header → /me, /trails devolve nível/XP/progresso). - PWA: manifest + ícone → site instala na home screen.
- sageland-auditor: subagent registrado (spec + vault + CLAUDE.md).
Gotchas gravados
- gamification exportada por subpath client-safe
@sageland/db/gamification(pelo index arrasta o driver postgres pro bundle do browser). - Dockerfile:
bun install(não--frozen-lockfile) +apps/mobileno.dockerignore— o lockfile referencia o workspace Expo que não vai na imagem do servidor. - CORS de auth:
/api/authemite CORS só pras origens emAUTH_TRUSTED_ORIGINSque começam com http (app nativo não sofre CORS; destrava preview web/clientes web futuros). - Expo web ≠ nativo: preview web não completa chamadas autenticadas à API cross-origin (cookie httpOnly bloqueado pelo browser). Só limitação de browser; nativo (Expo Go) funciona 100%. Testar sempre no Expo Go.
- Rodar:
cd apps/mobile && bunx expo start(aponta pra prod por default). Verapps/mobile/README.md.
Próximo
- Issue #14: push de ofensiva (Expo notifications) — depende do app publicado.
- EAS build/submit quando for pra loja (precisa conta Apple/Google do Marcus).