Inicio / Artículos / Un diario privado con IA usando Gemini, Firebase y preguntas fundamentadas sobre tus recuerdos

Un diario privado con IA usando Gemini, Firebase y preguntas fundamentadas sobre tus recuerdos

Cómo una app de diario con Gemini responde preguntas a partir de tus propias entradas, aísla los datos de cada usuario con reglas de Firebase y esconde la clave de API en el servidor.

1321 palabras

Un diario que puede contestar

La mayoría de los diarios solo guardan texto. Imagina volver semanas o meses después y preguntarle qué patrones aparecen en tus reflexiones, qué objetivos se repiten, cómo ha cambiado tu forma de pensar o sobre qué escribiste en una etapa concreta. Esa es la premisa de una app privada de diario con IA basada en Gemini, Firebase y Google Cloud, pensada como un «diario personal con Gemini» seguro.

La app combina el diario de siempre con la reflexión asistida por IA. La idea que la guía es que recordar lo que pasó es solo la mitad del trabajo, y un diario también debería ayudarte a entenderlo. Escribes entradas, registras tu estado de ánimo, añades un lugar si quieres y dejas que Gemini te ayude a pensar en lo que has escrito.

La función que más destaca es un modo de preguntas y respuestas sobre tu propio historial. En lugar de tratar cada entrada como un documento aislado, te deja preguntar algo como «¿qué temas se repiten en mis últimas reflexiones?» y obtener una respuesta construida a partir de las entradas que has guardado.

Funciones

Modos de reflexión

Tras escribir una entrada eliges cómo quieres que te ayude Gemini. Los modos son reflexión profunda, lluvia de ideas, resumen y charla. Así el diario pasa de ser una libreta estática a algo interactivo.

Hacer preguntas a tus recuerdos

Esta es la idea central. Haces preguntas en lenguaje natural sobre entradas anteriores, por ejemplo qué patrones aparecen en tus reflexiones recientes o qué objetivos has mencionado una y otra vez. La app encuentra los recuerdos relevantes y se los pasa a Gemini como contexto, de modo que la respuesta se apoya en tu propio diario y no en consejos genéricos.

Una línea de tiempo de recuerdos

Las reflexiones guardadas aparecen en una línea de tiempo, para que puedas recorrer tu propia evolución. Un recuerdo puede incluir título, texto de la reflexión, estado de ánimo, fecha y hora, lugar e ideas generadas por la IA, lo que da al conjunto una forma cronológica.

Lectura para reflexionar

La reflexión no debería acabar en la página del diario, así que la app tiene una sección de Libros. Puedes explorar libros relacionados con temas de reflexión y empezar una entrada a partir del que elijas. El ciclo que busca va de leer a pensar, de pensar a escribir y de escribir a recordar.

Lugares que eliges tú

Una entrada puede llevar un lugar, pero la app no lee tu posición actual de forma automática. Se basa en la búsqueda manual de lugares, así que tú decides exactamente qué datos de ubicación acaban en el diario.

Privacidad y seguridad

Un diario es algo personal, así que la seguridad entra en el diseño desde el primer día y no como un parche final. La identidad la gestiona Firebase Authentication, y los datos de cada persona se separan por su UID de Firebase. En Firestore, la estructura sigue este esquema conceptual:

users/
  {userId}/
    entries/
      {entryId}

Las reglas de seguridad de Firestore limitan a cada usuario autenticado a los datos que cuelgan de su propio ID. El principio es tajante: el usuario A nunca debe poder leer los recuerdos del usuario B. Además, el backend vuelve a verificar la autenticación de Firebase antes de atender cualquier petición de preguntas y respuestas. El resultado es una pila de capas de protección:

User
  ↓
Firebase Authentication
  ↓
Authenticated UID
  ↓
User-scoped Firestore data
  ↓
Relevant memories
  ↓
Gemini
  ↓
Grounded response

Cómo se usa Gemini

Gemini actúa como capa de razonamiento y reflexión. La app no envía una pregunta a secas, sino contexto estructurado a la API de Gemini. Para las preguntas sobre los recuerdos, el flujo es más o menos este:

User asks a question
        ↓
Firebase authentication
        ↓
Verify user identity
        ↓
Retrieve user's memories
        ↓
Select relevant/recent entries
        ↓
Build grounded Gemini context
        ↓
Gemini analyzes the memories
        ↓
Return response to user

El prompt de sistema le indica a Gemini que:

  • se ciña a las entradas del diario que recibe
  • no se invente recuerdos
  • identifique temas y patrones recurrentes
  • lo diga claramente cuando algo no aparece en los recuerdos del usuario
  • mantenga un tono cercano y reflexivo

Esta restricción importa, porque un asistente de memoria personal nunca debe inventarse la historia de alguien.

La clave de API fuera del cliente

Otra decisión de diseño fue mantener la credencial de Gemini lejos del frontend. La clave vive en una variable de entorno del servidor:

GEMINI_API_KEY

El navegador nunca ve la clave real, porque el backend la lee al crear el cliente de Gemini. La regla es sencilla: los secretos van en el servidor, nunca en JavaScript del lado del cliente.

La configuración web de Firebase es otro caso. Esas claves de API web identifican el proyecto de Firebase y no se consideran secretas. Lo que protege los datos es la autenticación, las reglas de autorización y unas restricciones de API sensatas.

Visión general de la arquitectura

A grandes rasgos, las piezas encajan así:

                 ┌───────────────────┐
                 │      User         │
                 └─────────┬─────────┘
                           │
                           ▼
                 ┌───────────────────┐
                 │   React Frontend  │
                 └─────────┬─────────┘
                           │
             ┌─────────────┴─────────────┐
             │                           │
             ▼                           ▼
   ┌──────────────────┐       ┌──────────────────┐
   │ Firebase Auth     │       │ Express Backend  │
   └──────────────────┘       └────────┬─────────┘
                                       │
                           ┌───────────┴───────────┐
                           │                       │
                           ▼                       ▼
                 ┌──────────────────┐    ┌─────────────────┐
                 │ Cloud Firestore  │    │ Gemini API      │
                 └──────────────────┘    └─────────────────┘

El frontend se ocupa de la experiencia. Firebase gestiona la autenticación y el almacenamiento por usuario. El backend hace de puerta de acceso controlada a Gemini.

Por qué está construido así

Apps de diario con IA hay muchas, así que un chatbot con un campo de notas aportaría poco. El experimento interesante es otra relación entre la IA y los datos personales. El camino habitual es usuario, IA y respuesta. Aquí el camino es usuario, recuerdos, IA y comprensión. La IA funciona como una capa sobre la historia de la propia persona, así que funciones como las preguntas sobre los recuerdos ganan valor a medida que crece la colección de entradas.

Un escenario corto muestra la idea. Alguien escribe reflexiones a lo largo de unas semanas. Una trata del arranque de un proyecto nuevo. Otra, de la incertidumbre sobre el futuro. Una posterior, de cómo ganó confianza tras superar un reto. En lugar de soltar una frase motivacional de manual, la app puede analizar esas reflexiones guardadas y describir la evolución que realmente muestran.

Qué lo hace distinto

Cuatro ideas recorren el proyecto:

  • Memoria personal: el diario se convierte en un espacio de conocimiento propio en el que se puede buscar.
  • IA fundamentada: Gemini trabaja con las reflexiones reales del usuario y no se inventa su historia personal.
  • Privacidad desde el diseño: la autenticación de Firebase y las reglas de seguridad de Firestore mantienen aislados los datos de cada usuario.
  • Reflexión por encima de generación: la gracia no es generar más texto, sino ayudar a la gente a entender lo que ya ha escrito.

Lecciones del desarrollo

Conectar una API a un frontend resulta ser la parte pequeña. Lo difícil fue la autenticación, el aislamiento de datos por usuario, el manejo seguro de las claves de API, el diseño de prompts, las conversaciones de varios turnos, anclar las respuestas en datos personales, un comportamiento de respaldo elegante, el despliegue con enrutamiento al backend y pensar en la privacidad antes de añadir funciones.

La lección que queda: en cuanto una app maneja datos personales, su modelo de seguridad y su arquitectura forman parte del propio producto y no son mera fontanería.

Qué podría venir después

Entre las posibles líneas están una mejor recuperación de recuerdos, búsqueda semántica en todo el diario, detección de patrones a largo plazo, resúmenes de reflexión personalizados, líneas de tiempo más ricas, mejores ideas generadas por la IA, más controles de privacidad y mejor despliegue y observabilidad. El objetivo a largo plazo es una herramienta que se sienta menos como un diario clásico y más como una capa privada de memoria.

Para terminar

La pregunta que lo empezó todo: ¿podría un diario ayudarte a recordar lo que aprendiste de lo que viviste, y no solo lo que pasó? El proyecto tocó Gemini, la autenticación de Firebase, Firestore, la gestión de claves, el grounding y el despliegue full stack, todo organizado alrededor de la privacidad. Lo más interesante no es que la IA escriba una reflexión. Es poder mirar atrás en tus propios recuerdos y descubrir patrones que por tu cuenta no habrías visto.