diff --git a/.gitignore b/.gitignore
index 80e70b86..5deb8a74 100644
--- a/.gitignore
+++ b/.gitignore
@@ -3,4 +3,5 @@
coverage/
node_modules/
.vscode/
-.env
\ No newline at end of file
+.env
+package-lock.json
diff --git a/README.md b/README.md
index 274b650a..27eab40e 100644
--- a/README.md
+++ b/README.md
@@ -1,770 +1,87 @@
# Dataverse Chat
-## Índice
-
-* [1. Preámbulo](#1-preámbulo)
-* [2. Resumen del proyecto](#2-resumen-del-proyecto)
-* [3. Consideraciones generales](#3-consideraciones-generales)
-* [4. Funcionalidades](#4-funcionalidades)
-* [5. Consideraciones técnicas](#5-consideraciones-técnicas)
-* [6. Criterios de aceptación mínimos del proyecto](#6-criterios-de-aceptación-mínimos-del-proyecto)
-* [7. Objetivos de aprendizaje](#7-objetivos-de-aprendizaje)
-* [8. Pistas, tips y lecturas complementarias](#8-pistas-tips-y-lecturas-complementarias)
-* [9. Consideraciones para pedir tu Project Feedback](#9-consideraciones-para-pedir-tu-project-feedback)
-
-***
-
## 1. Preámbulo
-En nuestro día a día, las aplicaciones web son como amigas
-inseparables. Desde las redes sociales hasta las herramientas de
-trabajo, las usamos todo el tiempo. Pero lo que hace que este
-momento sea realmente especial es que estas aplicaciones nos pueden
-abrir una puerta a algo asombroso: la interacción con inteligencia
-artificial.
-
-¿Qué tal si pudiéramos conversar con alguien que vivió hace más de
-cien años o incluso con los personajes de nuestras series y
-películas favoritas o con entidades que normalmente no pueden hablar
-como por ejemplo planetas o animales? La inteligencia artificial nos
-puede ayudar a entender el pasado y a conectarnos con figuras
-históricas, así como a sumergirnos en mundos ficticios.
-
-
-
-## 2. Resumen del proyecto
-
-En este proyecto convertirás la aplicación desarrollada
-en Dataverse en una
-[Single Page Application (SPA)](https://es.wikipedia.org/wiki/Single-page_application),
-manteniendo las funcionalidades de visualizar, filtrar, ordenar y
-calcular alguna estadística, adicionando una nueva vista para
-consultar información detallada de cada personaje/entidad y agregando
-la posibilidad de interactuar con un personaje/entidad o todos ellos
-a través de un sistema de chat impulsado por la
-[API de OpenAI](https://openai.com/product).
-
-### Los objetivos generales de este proyecto son los siguientes
-
-* Desarrollar una [Single Page Application (SPA)](https://es.wikipedia.org/wiki/Single-page_application)
-* Aplicar los conceptos de responsividad en el desarrollo de las vistas
-* Implementar un router para la navegación entre las diferentes
- vistas de la aplicación
-* Integrar una API externa
-* Entender la asincronía en JavaScript
-* Crear una suite de pruebas unitarias que permitan testear código asíncrono
-
-## 3. Consideraciones generales
-
-* Este proyecto se debe resolver en duplas.
-
-* El rango de tiempo estimado para completar el proyecto es de 4 a 5 Sprints.
-
-* La lógica del proyecto debe estar implementada completamente en JavaScript
- (ES6+), HTML y CSS. Para este proyecto **no está permitido** utilizar
- _frameworks_ o librerías de CSS y JS.
-
-* Es fundamental reutilizar parte del código del proyecto Dataverse, especialmente la sección relacionada con el dataset. Además, es esencial llevar a cabo una refactorización del código con el objetivo de hacerlo más modular y reutilizable. Esto implica la creación de nuevas funciones que permitan alcanzar las funcionalidades requeridas en el proyecto.
-
-* Para este proyecto **no está permitido** utilizar `async/await`.
-
-* El proyecto será entregado subiendo tu código a GitHub (commit/push) y deberás desplegarlo utilizando cualquiera de estas opciones:
- [Vercel](https://vercel.com/) o [Netlify](https://www.netlify.com/).
-
-* La división y organización del trabajo debe permitir, sin excepciones, que
- **cada integrante** del equipo practique el aprendizaje de todo lo involucrado
- en **cada historia**. _No se dividan el trabajo como en una fábrica._
- - ¿Hasta acá has avanzado en tus proyectos con cierta fluidez y sin mayores
- problemas? Sé generosa con tus compañeras, permíteles aprender y practicar
- sin restricciones, aunque tome un poco más de tiempo. Aproveha de
- _coachearlas_, de hacer _pair programming_, una de las mejores maneras de
- aprender es explicando verbalmente.
- - ¿Se te está haciendo difícil y te cuesta un poco más avanzar? No te quedes
- con las partes "fáciles" del proyecto, conversa, negocia, exige tu oportunidad
- para practicar y aprender lo que se te hace más difícil.
- Para comenzar tendrás que hacer un _fork_ y _clonar_ este repositorio.
-
-## 4. Funcionalidades
-
-El entregable final será una Single Page Application (SPA) que permitira al usuario **visualizar la información, filtrarla, ordenarla y calcular alguna estadística**, tal como se hizo en Dataverse. Además, deberá permitir acceder a una página que muestre el detalle de cada personaje para _interactuar_ con cada una de las entidades del set de datos que utilizaste anteriormente.
-
-A continuación, detallamos las funcionalidades mínimas que tu proyecto debe cumplir:
-
-* La aplicación debe ser _responsive_
-* La aplicación debe ser una SPA con múltiples vistas:
- - Implementar un sistema de enrutamiento que permita la navegación
- dentro de la aplicación.
- - Cada vista de la aplicación debe ser cargada dinámicamente
- mediante JavaScript.
- - Asegurarse de que la URL se actualice de manera acorde a la vista
- cargada al igual que el `title` del documento (la pestaña del navegador).
- - La aplicación debe ser capaz de cargar la vista correspondiente a
- la URL actual al iniciar la aplicación.
-* La aplicación debe mantener las funcionalidades de Dataverse: visualizar,
- filtrar, ordenar y calcular estadística de la data.
-* Al hacer clic en una tarjeta de personaje/entidad, la aplicación debe
- redirigirse a una vista **con su propia URL** que muestre la información
- detallada sobre ese personaje/entidad en particular
-* La aplicación debe permitir a la usuaria configurar la API Key para
- interactuar con la API de Open AI
-* Usando la API de Open AI, la aplicación debe permitir al usuario
- interactuar con un personaje/entidad a través de un chat.
- Por ejemplo, si usamos la data de ejemplo de Dataverse, correspondiente
- a las mujeres con mayores contribuciones a la programación en la historia,
- una usuaria puede establecer una conversación
- interactiva con
- [Ada Lovelace](https://es.wikipedia.org/wiki/Ada_Lovelace)
- a través del sistema de chat, obteniendo
- información sobre sus logros, desafíos y contribuciones a la informática.
- La inteligencia artificial de OpenAI permite que las respuestas sean
- informativas y personalizadas según las preguntas de los usuarios.
-
-```text
-Usuaria: "Hola, Ada. Cuéntame más sobre tus contribuciones a la informática."
-
-Ada Lovelace (AI de OpenAI): "¡Hola! Claro, estaré encantada de hablar sobre eso.
-Mis contribuciones más destacadas se relacionan con el trabajo junto a Charles Babbage
-en el diseño de la Máquina Analítica. Además, desarrollé el primer algoritmo destinado
-a ser procesado por una máquina, lo que me convierte en la primera programadora de la historia.
-¿Hay algo más en particular que te gustaría saber?"
-
-Usuaria: "¡Eso es fascinante! ¿Qué desafíos enfrentaste en ese tiempo?"
-
-Ada Lovelace (AI de OpenAI): "En ese tiempo, enfrenté varios desafíos, uno de los
-principales fue la limitación de recursos y la falta de reconocimiento del potencial
-de la Máquina Analítica. También tuve que superar las restricciones sociales de
-la época, ya que las mujeres tenían un acceso limitado a la educación en
-matemáticas y ciencias. Sin embargo, mi pasión por la matemática y la visión
-de lo que estas máquinas podrían lograr me impulsaron a seguir adelante."
-```
-
-* La aplicación debe permitir al usuario interactuar de manera simultánea
- con **todos** los personajes/entidades a través de un chat:
- - Esta funcionalidad debe cargarse en la URL `/panel`
- - La usuaria puede ingresar su pregunta o mensaje para todos los
- personajes/entidades en un cuadro de texto y enviarlo con un botón
- - El mensaje de la usuaria debe ser ajustado para cada personaje/entidad,
- con el objetivo que este genere una respuesta basada en su personalidad
- y conocimiento
- - Las respuestas de todos los personajes se muestran de acuerdo al orden
- respuesta.
- - Indicar visualmente cuando uno o varios personajes/entidades esten
- generando una respuesta al mensaje enviado
-* La aplicacion debe informar a la usuaria los errores que puedan surgir al
- interactuar con la API, como por ejemplo alcanzar la cuota de tokens por
- minuto o cualquier otro error relacionado con la API. Debería
- proporcionarse una descripción clara de la causa del problema y posibles
- soluciones.
-
-Para que los chats anteriores puedan funcionar, es esencial que la aplicación
-se integre con la IA a través de la API de OpenAI. Para ello, el equipo de
-Laboratoria te proporcionará una API Key que la usuaria deberá poder ingresar
-en la aplicación que tu construirás.
-
-_Nota_: puedes revisar esta [implementación](https://laboratoria-dataverse-talks.netlify.app/)
-de ejemplo, cuyo principal objetivo es mostrarte cómo se vería la
-funcionalidad de chat en tu aplicación, más no tomes el diseño como
-referencia para tu proyecto, siente libre de hacer volar tu imaginación
-diseñando tu propia interfaz.
-
-## 5. Consideraciones técnicas
-
-La lógica del proyecto debe estar implementada completamente en JavaScript
-(ES6), HTML y CSS. En este proyecto NO está permitido usar librerías o
-frameworks, solo [vanilla JavaScript](https://medium.com/laboratoria-how-to/vanillajs-vs-jquery-31e623bbd46e).
-
-El _boilerplate_ que viene con el proyecto es una estructura inicial. Ustedes
-deben ir agregando más archivos conforme vayan avanzando en su proyecto.
-La siguiente es una estructura de archivos que recomendamos:
-
-```text
-.
-├── src
-| ├── components
-| ├── data
-| | └── dataset.js
-| ├── lib
-| | └── dataFunctions.js
-| ├── views
-| ├── index.html
-| ├── index.js
-| ├── router.js
-| └── style.css
-├── test
-| └── dataFunctions.spec.js
-| └── example.spec.js
-├── README.md
-└── package.json
-
-```
-
-### `src/components`
-
-Esta carpeta contendrá archivos JavaScript
-que representan [componentes](https://lenguajejs.com/vuejs/componentes/que-es-un-componente/)
-reutilizables de tu aplicación. Estos componentes
-pueden ser elementos de la interfaz de usuario que se utilizan en varias partes
-de tu aplicación. Organizar tus componentes de esta manera ayuda a mantener un
-código más modular y reutilizable.
-
-### `src/data`
-
-En esta carpeta están los datos con los que vas a trabajar (los datos de ejemplo
-o los datos que generarías con ayuda de la inteligencia artificial).
-
-### `src/lib`
-
-En esta carpeta, crearás módulos que contengan funcionalidades no relacionadas
-al DOM. Aquí podrás incluir el archivo
-`dataFunctions.js` que contiene las funciones que te permiten filtrar,
-ordenar y hacer cálculos agregados. También podrás crear archivos con
-las funciones que
-interactúen con la API de inteligencia artificial o utilidades destinadas
-a almacenar datos en el local storage.
-
-### `src/views`
-
-Esta carpeta generalmente contiene archivos de los componentes que
-representan las diferentes páginas o vistas de tu aplicación.
-Cada vista (view) puede tener su propio archivo
-JavaScript, que exporta una función que es responsable de generar
-los elementos del DOM.
-
-### `src/index.html`
-
-Como en el proyecto anterior, existe un archivo `index.html`. En este archivo
-HTML encontrarás un elemento DOM `
` donde vas a
-renderizar las diferentes vistas de tu aplicación.
-
-### `src/index.js`
-
-El punto de partida para tu SPA sera el archivo `src/index.js`. Acá encontrarás
-algunas instrucciones y comentarios para guiarte en el inicio del desarrollo
-de tu aplicación.
-
-### `src/router.js`
-
-En este archivo vas a manejar el enrutamiento de tu aplicación. Es un archivo
-que debes crearlo por tu cuenta.
-
-### `src/style.css`
-
-Es un archivo que debes crearlo por tu cuenta para agregar los estilos que
-necesites para tu aplicación.
-
-### `src/test`
-
-Esta carpeta contiene los tests de tus funciones y componentes. Por ejemplo
-los tests de dataFunctions deben estar aquí.
-
-## 6. Criterios de aceptación mínimos del proyecto
-
-Además de las funcionalidades que definimos en la sección de
-[Funcionalidades](#4-funcionalidades), tu proyecto debe cumplir con los
-siguientes requisitos:
-
-### Definición del producto
-
-Documenta brevemente tu trabajo en el archivo `README.md` de tu repositorio,
-contándonos cómo fue tu proceso de diseño y cómo crees que el producto resuelve
-el problema (o problemas) que tiene tu usuaria.
-
-### Historias de usuaria
-
-Una vez que entiendas las necesidades de tus usuarias, escribe las [Historias
-de Usuaria](https://es.wikipedia.org/wiki/Historias_de_usuario) que representen
-todo lo que la usuaria necesita hacer/ver. Las **Historias de Usuaria** deben
-ser el resultado de tu proceso de investigación o _research_ de tus usuarias.
-
-Asegúrate de incluir la definición de terminado (_definition of done_) y los
-Criterios de Aceptación para cada una.
-
-Usa tus historias de usuaria para planificar tus sprints dividiendo
-cada historia en tareas.
-
-En la medida de lo posible, termina una Historia de Usuaria antes de pasar
-a la siguiente (cumpliendo con la Definición de Terminado y los Criterios
-de Aceptación).
-
-### Diseño de la Interfaz de Usuaria
-
-#### Prototipo de baja fidelidad
-
-Durante tu trabajo deberás haber hecho e iterado bocetos (_sketches_) de tu
-solución usando papel y lápiz. Te recomendamos tomar fotos de todas las
-iteraciones que hagas, que las subas a tu repositorio y las menciones en tu
-`README.md`.
-
-Recuerda pedir feedback de tu prototipo a tus compañeras y/o coaches.
-
-#### Prototipo de alta fidelidad
-
-Lo siguiente es diseñar tu Interfaz de Usuaria (UI por sus siglas en inglés -
-_User Interface_). Para eso debes aprender a utilizar alguna herramienta de
-diseño visual. Nosotros te recomendamos [Figma](https://www.figma.com/) que es
-una herramienta que funciona en el navegador y, además, puedes crear una cuenta
-gratis. Sin embargo, eres libre de utilizar otros editores gráficos como
-Illustrator, Photoshop, etc.
-
-El diseño debe representar el _ideal_ de tu solución. Digamos que es lo que
-desearías implementar si tuvieras tiempo ilimitado para trabajar. Además, tu
-diseño debe seguir los fundamentos de _visual design_.
-
-Recuerda pedir feedback de tu prototipo a tus compañeras y/o coaches.
-
-### Testeos de usabilidad
-
-Durante el reto deberás hacer _tests_ de usabilidad con distintos usuarias,
-y con base en los resultados, deberás iterar tus diseños. Cuéntanos
-qué problemas de usabilidad detectaste a través de los _tests_ y cómo los
-mejoraste en tu propuesta final.
-
-### Implementación de la Interfaz de Usuaria (HTML/CSS/JS)
-
-Luego de diseñar tu interfaz de usuaria deberás trabajar en su implementación.
-**No** es necesario que construyas la interfaz exactamente como la diseñaste.
-Tu tiempo de hacking es escaso, así que deberás priorizar.
-
-Revisa [las funcionalidades](#4-funcionalidades) que el proyecto pide del interfaz.
-
-### Pruebas unitarias
-
-El _boilerplate_ de este proyecto no incluye Pruebas Unitarias (_tests_), así es
-que tendrás que escribirlas tú para las funciones encargadas de _procesar_,
-_filtrar_ y _ordenar_ la data, así como _calcular_ estadísticas.
-Te recomendamos usar
-el framework [Jest](https://jestjs.io/) para ejecutar las pruebas unitarias.
-Consultar su documentación.
-
-Tus _pruebas unitarias_ deben dar una cobertura del 70% de _statements_
-(_sentencias_), _functions_ (_funciones_), _lines_ (_líneas_), y _branches_
-(_ramas_) del archivo `src/dataFunctions.js` que contenga tus funciones y
-está detallado en la sección de [Consideraciones técnicas](#5-consideraciones-técnicas).
-
-## 7. Objetivos de aprendizaje
-
-
-Reflexiona y luego marca los objetivos que has llegado a entender y aplicar en tu proyecto. Piensa en eso al decidir tu estrategia de trabajo.
-
-### HTML
-
-- [ ] **Uso de HTML semántico**
-
- Links
-
-### Web APIs
-
-- [ ] **Uso de selectores del DOM**
-
- Links
-
- * [Manipulación del DOM](https://curriculum.laboratoria.la/es/topics/browser/dom/1-dom-methods-selection)
- * [Introducción al DOM - MDN](https://developer.mozilla.org/es/docs/Web/API/Document_Object_Model/Introduction)
- * [Localizando elementos DOM usando selectores - MDN](https://developer.mozilla.org/es/docs/Web/API/Document_object_model/Locating_DOM_elements_using_selectors)
-
-
-- [ ] **Manejo de eventos del DOM (listeners, propagación, delegación)**
-
- Links
+Warsiepedia es una plataforma web diseñada con la premisa de ofrecer una experiencia inmersiva sobre los personajes del universo Star Wars, permite a los usuarios explorar de manera interactiva un extenso conjunto de datos sobre sus personajes favoritos de la saga. Siguiendo el modelo de Single Page Application (SPA) y aprovechando la potencia de la inteligencia artificial desarrollada por OpenAI y permite interactuar con los personajes de Star Wars a través de un innovador sistema de chat, para acceder a esta función, los usuarios utilizan una API key que facilita la conexión con la interfaz de OpenAI, permitiendo así conversaciones individuales con cada personaje.
-- [ ] **Ruteado (History API, evento hashchange, window.location)**
+Las tarjetas interactivas de Warsipedia proporcionan detalles clave de cada personaje, como su nombre, afiliación y una breve descripción. Al hacer clic en una tarjeta específica, los usuarios pueden sumergirse aún más en la experiencia al acceder a un chat exclusivo con el personaje seleccionado. Este chat proporciona una plataforma única para dialogar con los héroes y villanos icónicos de Star Wars, permitiendo a los usuarios explorar sus historias, motivaciones y obtener respuestas a preguntas específicas.
- Links
+Con la combinación de la tecnología de OpenAI y la riqueza de información proporcionada, Warsiepedia se presenta como la plataforma definitiva para los fanáticos de Star Wars que buscan explorar y comprender a fondo el universo que tanto aman.
- * [Manipulando el historial del navegador - MDN](https://developer.mozilla.org/es/docs/DOM/Manipulando_el_historial_del_navegador)
-
-
- * [Valores, tipos de datos y operadores](https://curriculum.laboratoria.la/es/topics/javascript/basics/values-variables-and-types)
- * [Variables](https://curriculum.laboratoria.la/es/topics/javascript/basics/variables)
-
-
- * [Códigos de estado de respuesta HTTP - MDN](https://developer.mozilla.org/es/docs/Web/HTTP/Status)
- * [The Complete Guide to Status Codes for Meaningful ReST APIs - dev.to](https://dev.to/khaosdoctor/the-complete-guide-to-status-codes-for-meaningful-rest-apis-1-5c5)
-
-
-### Control de Versiones (Git y GitHub)
-
-- [ ] **Git: Instalación y configuración**
-
-- [ ] **Git: Control de versiones con git (init, clone, add, commit, status, push, pull, remote)**
+## 2. Resumen del proyecto
-- [ ] **Git: Integración de cambios entre ramas (branch, checkout, fetch, merge, reset, rebase, tag)**
+Warsipedia redefine la exploración del universo Star Wars al proporcionar a los usuarios una experiencia inmersiva mediante tarjetas interactivas que detallan información crucial de los personajes, como su nombre, afiliación y descripción. Todo esto en una Single Page Aplication y con el respaldo de la tecnología de OpenAI, la plataforma permite a los usuarios participar en conversaciones individualizadas a través de un innovador sistema de chat, accesible mediante una API key. La capacidad de filtrar y ordenar los personajes agrega un toque personalizado a la búsqueda. Warsipedia se erige como una herramienta esencial para los fanáticos, ofreciendo no solo datos detallados, sino también una conexión única con los personajes emblemáticos de Star Wars.
-- [ ] **GitHub: Creación de cuenta y repos, configuración de llaves SSH**
+[](https://postimg.cc/hz4xPt8B)
-- [ ] **GitHub: Despliegue con GitHub Pages**
- Links
+## 3. Funcionalidades
- * [Sitio oficial de GitHub Pages](https://pages.github.com/)
-
+El entregable final es una Single Page Application (SPA) que permite al usuario visualizar la información, filtrarla y ordenarla. Además, posibilita el acceso a una página que muestre el detalle de cada personaje para interactuar con cada entidad del conjunto de datos utilizado anteriormente.
-- [ ] **GitHub: Colaboración en Github (branches | forks | pull requests | code review | tags)**
+A continuación, detallamos las funcionalidades con las que cumple el proyecto:
-### Centrado en el usuario
+* La aplicación es responsive.
+* La aplicación es una SPA con múltiples vistas:
+-Implementa un sistema de enrutamiento que permite la navegación dentro de la aplicación.
+-Cada vista de la aplicación se carga dinámicamente mediante JavaScript.
+-Asegura que la URL se actualice de acuerdo con la vista cargada, así como el title del documento (la pestaña del navegador).
+-La aplicación es capaz de cargar la vista correspondiente a la URL actual al iniciar la aplicación.
+* La aplicación mantiene las funcionalidades de Warsipedia: visualizar, filtrar y ordenar.
+* Al hacer clic en una tarjeta de personaje/entidad, la aplicación se redirige a una vista con su propia URL que muestra la información detallada sobre ese personaje/entidad en particular.
+* La aplicación permite a la usuaria configurar la API Key para interactuar con la API de Open AI.
+* Usando la API de Open AI, la aplicación permite al usuario interactuar con un personaje/entidad a través de un chat.
-- [ ] **Diseñar y desarrollar un producto o servicio poniendo a las usuarias en el centro**
-### Diseño de producto
+## 4. Solución de problema
-- [ ] **Crear prototipos de alta fidelidad que incluyan interacciones**
-- [ ] **Seguir los principios básicos de diseño visual**
+### Definición del producto
-### Investigación
+En el proceso de diseño de Warsipedia, nos embarcamos en la misión de crear una plataforma que no solo proporcionara datos detallados sobre los personajes de Star Wars, sino que también ofreciera una experiencia interactiva y personalizada para los usuarios. Comenzamos por comprender las necesidades de las usuarias, identificando los problemas comunes que podrían enfrentar al explorar información extensa sobre personajes de la saga.
-- [ ] **Planear y ejecutar testeos de usabilidad de prototipos en distintos niveles de fidelidad**
+La primera etapa del diseño se centró en la creación de una interfaz intuitiva y responsive, garantizando que Warsipedia sea accesible en cualquier dispositivo. La implementación de una Single Page Application (SPA) con un sistema de enrutamiento permitió una navegación fluida y dinámica, mejorando la experiencia del usuario al cargar vistas de manera eficiente y actualizar la URL de manera acorde.
- Links
+### Valor agregado
- * [Intro a testeos usabilidad](https://coda.io/@bootcamp-laboratoria/contenido-ux/test-de-usabilidad-15)
- * [Pruebas con Usuarios 1 — ¿Qué, cuándo y para qué testeamos?](https://eugeniacasabona.medium.com/pruebas-con-usuarios-1-qu%C3%A9-cu%C3%A1ndo-y-para-qu%C3%A9-testeamos-7c3a89b4b5e7)
-
Greetings, Star Wars Enthusiast!
+
+ To unlock the full power of your galactic journey and connect with iconic
+ Star Wars characters, we encourage you to input your API Key, it will
+ serve as the key to personalized interactions, granting you access to
+ exclusive features and the opportunity to chat with characters
+ from a galaxy far, far away.
+
+ To unlock the full power of your galactic journey,
+ enter your API Key in the section below.
+