No updates detected yet. GitHub releases will appear here.
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗App web, pensada primero para el celular, que ayuda a personas mayores que no saben usar tecnología, con la familia conectada.
La IA es la de Anthropic (Claude). Esta versión es la plantilla base: las pantallas del abuelo y de la familia todavía dicen "En construcción".
| Parte | Carpeta | Responsable |
|---|---|---|
| Pantalla del abuelo | app/abuelo/ | Lara |
| Pantalla de la familia | app/familia/ | Felipe |
| Script de Gmail | gmail/ | Inés |
Archivos compartidos (avisar al equipo antes de cambiarlos):
| Archivo | Para qué sirve |
|---|---|
lib/datos.ts | Único lugar que lee y guarda la configuración de cada abuelo. |
lib/ia.ts | Único lugar que habla con la IA (solo desde el servidor). |
lib/sesion.ts | Login: quién entró y si es abuelo o familiar. |
components/BarraNavegacion.tsx | Barra de botones de abajo. |
app/globals.css | Diseño: letra grande, botones grandes, mucho contraste. |
app/api/configuracion/ | Ruta que usa el script de Gmail para leer la configuración. |
app/prueba/ | Página para comprobar que todo funciona. |
/familia de esa familia. Para probar: el mail de Inés o de Lara entra a la familia DEMO./familia la IA le pregunta todo lo del abuelo charlando./familia. Para probar: DEMO. Una familia recién creada no deja entrar al abuelo hasta que tenga el nombre cargado.El abuelo solo puede ver /abuelo y el familiar solo /familia. La sesión dura un año, así que un familiar puede iniciar sesión una vez en el celular del abuelo y queda abierta.
Es un login simple para la hackatón: no se verifica el mail (quien escriba el mail de un familiar entra a su familia) y quien sepa el código entra como abuelo.
Solo la primera vez:
cd ruta/a/la/carpeta/HACKATON
npm install
cp .env.example .env.local
.env.local con cualquier editor de texto y completá los valores (ver la sección siguiente). Si dejás alguno vacío, la app igual arranca y /prueba te avisa qué falta.Cada vez que quieras usarla:
npm run dev
Ctrl + C.Son datos secretos que nunca se suben a GitHub. En tu compu van en .env.local; en Vercel se cargan en la configuración del proyecto.
| Variable | Qué es | ¿Obligatoria? |
|---|---|---|
ANTHROPIC_API_KEY | Clave de la IA. Se saca en https://platform.claude.com/settings/keys | Sí, para usar la IA |
SESSION_SECRET | Texto secreto largo inventado (40 letras y números al azar). Protege el login. | Sí en Vercel. En tu compu, opcional |
CONFIG_API_TOKEN | Otro texto secreto largo inventado. El script de Gmail lo usa para leer la configuración. | Sí, para Gmail |
KV_REST_API_URL y KV_REST_API_TOKEN | Dirección y clave de la base de datos Upstash Redis. En Vercel se cargan solas. | En Vercel sí. En tu compu, opcional |
GMAIL_USUARIO | El Gmail de la demo que manda los pedidos de aprobación a la familia. | Sí en Vercel. En tu compu, opcional (sin esto, el mail se muestra en la Terminal) |
GMAIL_CONTRASENA_APP | "Contraseña de aplicación" de ese Gmail (16 letras). Ver abajo cómo sacarla. | Igual que la anterior |
URL_APP | Dirección pública de la app (por ejemplo https://tu-app.vercel.app), para los links de los mails. | Recomendada en Vercel |
VAPID_PUBLIC_KEY y VAPID_PRIVATE_KEY | Claves para mandar notificaciones al celular de la familia. Se generan una vez con npx web-push generate-vapid-keys. | Sí, para las notificaciones (sin esto, solo mails) |
MINUTOS_PARA_CONTESTAR | Minutos que tiene cada familiar para aprobar un pedido antes de preguntarle al siguiente (si no está: 5). Para la demo se puede poner 1. | No |
Si en tu compu no ponés la base de datos, los datos se guardan en memoria y se borran al apagar la app.
Cómo sacar la contraseña de aplicación de Gmail (con el Gmail de la demo):
Asistente de confianza y tocá Crear.GMAIL_CONTRASENA_APP.Para inventar un texto secreto largo, en la Terminal:
openssl rand -hex 24
/pruebaEntrá como familiar y tocá Prueba en la barra de abajo. Ahí se ve:
GET https://TU-APP.vercel.app/api/configuracion?codigo=DEMO
Header: Authorization: Bearer <CONFIG_API_TOKEN>
Ejemplo en Google Apps Script:
const respuesta = UrlFetchApp.fetch('https://TU-APP.vercel.app/api/configuracion?codigo=DEMO', {
headers: { Authorization: 'Bearer ' + PropertiesService.getScriptProperties().getProperty('CONFIG_API_TOKEN') },
})
const configuracion = JSON.parse(respuesta.getContentText())
Respuestas: 200 con la configuración, 401 si el token está mal, 404 si no existe esa familia.
El formato de la configuración (abuelo, lugares, comercios, familiares y reglas) está explicado en
docs/formato-configuracion.md. Los familiares vienen enfamiliares; el campoordendice a quién se le pregunta primero.
ANTHROPIC_API_KEY, SESSION_SECRET, CONFIG_API_TOKEN, GMAIL_USUARIO, GMAIL_CONTRASENA_APP y URL_APP (la dirección de tu app en Vercel).DEMO como familiar y revisá /prueba.Después de esto, cada vez que se suba algo a main, Vercel publica la nueva versión sola.