App móvil para tomar notas de clase con un agente IA integrado. Tres capacidades clave:
- Investigar una nota en la web — el agente busca en internet, devuelve una explicación expandida y cita las fuentes (papers, docs académicas).
- Reorganizar la nota en jerarquía — la IA reescribe los apuntes en un esquema con encabezados y bullets, sin agregar información nueva.
- Buscar entre todas tus notas — full-text search sobre tus apuntes y síntesis IA estricta que solo usa lo que tú has escrito (no toca internet).
Stack: Expo SDK 54 (React Native + TypeScript), Supabase (Auth + Postgres con FTS + Edge Functions), OpenAI Responses API.
BoosterAi/
├── app/ # App móvil (Expo + expo-router)
├── backend/ # Supabase: migraciones + 3 edge functions
└── package.json # Workspace npm
- Desde tu celular Android, abre este link: https://expo.dev/artifacts/eas/mWRzzjSd1AyYqnb2EJdcw7.apk
- Toca para descargar el archivo
.apk(~50–80 MB). - Cuando termine la descarga, ábrelo desde la barra de notificaciones o el gestor de archivos.
- Android te pedirá permiso para "Instalar apps de fuentes desconocidas".
Acéptalo (es seguro: el APK está firmado por el sistema de build oficial de
Expo). En algunos dispositivos hay que activarlo en
Ajustes → Seguridad → Instalar apps desconocidaspara tu navegador. - Toca Instalar. La app aparece como BoosterNotes en el launcher.
- Ábrela, crea una cuenta con tu email y empieza a tomar notas.
Si prefieres compartir el APK con otra persona, puedes mandarles directamente el link de arriba — es público.
Página oficial del build con QR para escanear: https://expo.dev/accounts/sebastianlev/projects/boosternotes/builds/a99f7da8-085d-4bc5-b2f9-60b612cb1fde
iOS no permite instalar IPAs públicos sin pasar por la App Store o TestFlight, y ambos requieren cuenta de Apple Developer Program (USD $99/año). Hay dos caminos para probar la app desde un iPhone:
Opción A — TestFlight (recomendado para distribución real, requiere Apple Developer Account)
# Compila el IPA y lo sube a TestFlight automáticamente
cd app
npx eas-cli build --platform ios --profile preview
npx eas-cli submit --platform ios --latestUna vez aceptado por TestFlight (toma ~24h la primera vez), invitas testers con su email — ellos instalan TestFlight desde la App Store y reciben un link para descargar la app.
Opción B — Expo Go con tunnel (sin pagar, solo mientras tu Mac esté encendida)
cd app
npx expo start --tunnelEsto genera una URL pública (ngrok-style) que cualquiera con Expo Go
instalado en su iPhone puede abrir. Escanean el QR con la cámara o pegan la
URL exp://... en Expo Go. Limitación: solo funciona mientras tu Mac corra
el dev server.
- Node.js 20+
- npm 10+
- Supabase CLI —
brew install supabase/tap/supabase-beta - Docker Desktop (Supabase local lo necesita)
- Expo Go SDK 54 en tu teléfono (App Store / Play Store)
- API key de OpenAI con acceso a la Responses API +
web_searchtool
cd /path/to/BoosterAi
npm installcd backend
supabase start
supabase db reset # aplica migrations/0001_init.sql + 0002_search_and_organize.sqlStudio en http://127.0.0.1:54323 para inspeccionar tablas.
cp backend/.env.example backend/.env
# edita backend/.env y pon tu OPENAI_API_KEYEn otra terminal:
cd backend
supabase functions serve --env-file ./.envEsto sirve las 3 functions: research-note, organize-note, search-notes.
cp app/.env.example app/.envEdita app/.env con la URL y anon key que imprimió supabase start.
Para teléfono físico o emulador:
127.0.0.1no funciona porque apunta al dispositivo mismo. Usa la IP LAN de tu Mac (ej.http://192.168.1.10:54321). Encuéntrala conipconfig getifaddr en0.
cd app
npx expo start --host lanEscanea el QR con Expo Go o pega la URL exp://<IP_MAC>:8081 en Expo Go.
- Auth: Crear cuenta desde signup → autenticado.
- Notas: Crear, escribir, autosave automático cada 700ms.
- Vista organizada: en una nota, pestaña "Organizada" → "Generar".
- Investigar: en panel "Asistente IA" → pregunta + "Investigar" → markdown
- tarjetas de citas reales.
- Buscar: tab "Buscar" → tema → síntesis solo con tus apuntes + matches con highlights.
- Borrar: trash icon en cada nota, en cada mensaje IA, "Borrar historial".
- Multi-dispositivo: misma cuenta en otro device → notas sincronizadas.
- Seguridad: verifica que la API key no está en el bundle:
grep -r "sk-proj" app/ || echo "OK"
backend/supabase/migrations/:
notes—id,user_id,title,content,organized_content,organized_at,search_vector(tsvector en español, índice GIN), timestamps.ai_messages— historial del agente por nota (role,content,citationsjsonb).- RLS activo en ambas: cada usuario sólo ve lo suyo.
- RPC
search_user_notes(q)— full-text search conts_headlinepara snippets resaltados.
| Función | Qué hace | OpenAI |
|---|---|---|
research-note |
Investiga una nota en la web | Responses API + web_search tool |
organize-note |
Reestructura en jerarquía sin agregar info | Responses API (sin tools) |
search-notes |
FTS + síntesis estricta de las notas del usuario | Responses API (sin tools) |
Las 3 verifican el JWT del usuario, respetan RLS, y la API key de OpenAI vive solo en el servidor — nunca toca el cliente.
cd backend
supabase login
supabase link --project-ref <tu-project-ref>
supabase db push
supabase secrets set OPENAI_API_KEY=sk-proj-...
supabase functions deploy research-note
supabase functions deploy organize-note
supabase functions deploy search-notesActualiza app/.env con la URL y anon key del proyecto remoto antes de
hacer el build nativo.
Para distribuir vía TestFlight / Play Store, usa EAS:
cd app
npx eas-cli build --platform ios # o android