Se realiza este proyecto con el propósito de recaudar toda la información de Las mejores Cientificas del Mundo. Con ese propósito, nuestro set de datos fueron generados usando el ChatGPT.
Se agrega dos "Filtros" para que nuestros usuarios puedan realizar la búsqueda más eficaz. Incluyendo, realiza la creación de un botón, para que se pueda "Limpiar" y así pueda realizar la búsqueda desde el principio.
Hemos cubierto las funcionalidades requeridas. El objetivo principal, era que se pueda visualizar la data.
- El usuario debe tener la facilidad de navegar por la página web.
- El usuario debe entender la información de cada cientifica.
- El usuario debe usar los filtros y los botones sin inconvenientes.
- La página debe ser usada en cualquier dispositivo.
- Las tarjetas deben resaltar los valores de las propiedades de la data que le interesaría a la usuaria ver. Por ejemplo: nombre, fecha, imagen, etc. Si vas a filtrar u ordenar por una propiedad, la tarjeta tiene que mostrar el valor de esta propiedad a la usuaria.
Por ejemplo, la siguiente data correspondiente a Ada Lovelace: url(
{
"id": "ada-lovelace",
"name": "Ada Lovelace",
"shortDescription": "Pionera de la informática, fue la primera programadora.",
"description": "Una visionaria del siglo XIX ...",
"imageUrl": "URL_DE_LA_IMAGEN_GENERADA",
"facts": {
"yearOfBirth": 1843,
"placeOfBirth": "London, England",
"mainField": "Computer Science",
}
}- Criterios de aceptación mínimos del proyecto Se cumple con los requerimientos necesarios para que nuestra página web sea útil al usuario. Por ejemplo:
-
Uso de HTML semántico
- Tiene un
<header>con<h1> - Tiene un
<footer> - Tiene un
<main>con<h2> - Todas las etiquetas de controles (inputs, selects, radio, etc) tienen
<label> -
<ul>esta usado para dibujar la data - Los hijos de
<li>usan attributos de microdataitemscopeeitemprop
- Tiene un
-
Uso de selectores de CSS
- Uso de selector class para los items
- Uso de flexbox en sentido
rowycolumn - Uso de flexbox para el elemento que contiene los items
- Uso de flexbox para el elemento que contiene los UI inputs
-
Uso de selectores del DOM
- La aplicación usa
querySelectorpara buscar los elementos del DOM
- La aplicación usa
-
Manejo de eventos del DOM (listeners, propagación, delegación)
-
addEventListenercon callback que tiene parámetro deevent, lo que permite el uso del objetoeventconevent.targetoevent.currentTarget - La aplicación registra Event Listeners
para escuchar
click,change,keyupdependiendo del evento que se quiere escuchar
-
-
Manipulación dinámica del DOM
- La aplicación actualiza el atributo
innerHTML. - La aplicación usa
createElementyappendChild, o template strings para crear elementos
- La aplicación actualiza el atributo
-
Variables (declaración, asignación, ámbito)
-
Uso de condicionales (if-else, switch, operador ternario, lógica booleana)
- La aplicación usa el statement
if..elsepara evaluar condiciones
- La aplicación usa el statement
-
Uso de bucles/ciclos (while, for, for..of)
-
Funciones (params, args, return)
En el archivo
dataFunctions.jsdefine las siguientes funciones:- una función
sortByque tiene 3 parámetros (data,sortBy,sortOrder) y devuelve el arreglo ordenado - una función
filterByque tiene 3 parámetros (data,filterBy,value) y devuelve el arreglo filtrado - una función
computeStatsque tiene al menos un parámetro (data) y devuelve un valor computado
Más sobre estos puntos en la sección dataFunctions.js
- una función
-
Arrays (arreglos)
- Uso de Arreglos
- Uso de Array.prototype.sort() - MDN o Array.prototype.toSorted - MDN
- Uso de Array.prototype.forEach() - MDN
- Uso de Array.prototype.map() - MDN
- Uso de Array.prototype.filter() - MDN
- Uso de Array.prototype.reduce() - MDN
-
Objetos
- Uso de notación de punto para acceder propiedades
- Uso de notación de brackets para acceder propiedades
-
Módulos de ECMAScript (ES Modules)
Nuestras usuarias esperan poder encontrar información precisa y contundente del tema relacionado. En este caso "Mujeres científicas" En este caso, se facilita la visualización de la información, foto de referencia y búsqueda efectiva.
- Titulo de la página.
- Visualizar la imagen de referencia de cada científica.
- La página web sea Responsiva.
- No tenga interacción.
- Que se vea la página con información y formato de prototipo.
- Subido al repositorio con cambios míos y de mi compañera.
- Prueba de Usabilidad (por lo menos 2 personas realicen feedback).
- Trabajar con HTML y CSS Reponsive.
- Trabajar con los datos para que se visualice la data en la página web.
- Averiguar que es un archivo JSON.
- Subir toda la información al repositorio y que se visualice.
La página web permita a nuestras usuarias obtener la información con la data generada, visualizarla y filtrarla según su conveniencia.
- Qué nuestras usuarias vean la información en las tarjetas.
- Que realicen interacciones en la página web y puedan filtrarla desde "Especialidad" para que su búsqueda sea más eficaz.
- Que las usuarias puedan ordenar los nombres de manera ascendente ("A-Z") y descendente ("Z-A").
- Que se vea el formato de los filtros y que los botones funcionen.
- Subido al repositorio con cambios míos y mi compañera
- Que los test pasen por lo menos en un 70 % y crear los test con Jest.
- Trabajar con HTML, CSS y JAVASCRIPT.
- Que se puede filtrar por especialidad y muestre todas las opciones aún cuando cuenten con más de una.
- Que el ordenado sea de la A-Z Z-A
- Aplicar los test unitarios y que pase por lo menos un 70% de ellos.
Que la usuaria pueda ver desplegada la página web y el resumen del proyecto en Github.
- Pagina clara de leer con buen diseño y colores de acuerdo al proyecto.
- Que estén todos los cambios en github.
- Desplegado en Github.
- Cumplir con los objetivos en el Readme
- Test.
- Trabajar con Github y Jest para los test.
- Resumen del proyecto de forma clara.
Usando los wireframes o bocetos (sketches) de tu solución de interfaz como base, 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 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.
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.
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 que el proyecto pide del interfaz.
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. Este proyecto usa el framework Jest para ejecutar las pruebas unitarias por lo que te recomendamos 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.
Las secciones llamadas Hacker Edition son opcionales. Si terminaste con todo lo anterior y te queda tiempo, intenta completarlas. Así podrás profundizar y/o ejercitar más sobre los objetivos de aprendizaje del proyecto.
Features/características extra sugeridas:
- Visualizar la estadística calculada mediante un gráfico. Para ello te recomendamos explorar librerías de gráficas como Chart.js o Google Charts.
- 100% Coverage