Skip to content

🤸‍♂️🚴‍♂️🤾‍♀️🤽‍♂️ Olympic Games. Conoce información sobre los atletas que participaron en los juegos Olimpicos - Segundo proyecto de laboratoria / Lina Alvarado y Daniela Nieto

Notifications You must be signed in to change notification settings

LinaAlvarado/BOG005-data-lovers

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

47 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Data Lovers / Olympic Games

Les presentamos el segundo proyecto de Laboratoria / Colaboradoras: Daniela Nieto y Lina Alvarado.

¿En qué consiste el proyecto?

En este proyecto construirás una página web para visualizar un conjunto (set) de datos que se adecúe a lo que descubras que tu usuario necesita. Como entregable final tendrás una página web que permita visualizar la data, filtrarla, ordenarla y hacer algún cálculo agregado. Con cálculo agregado nos referimos a distintos cálculos que puedes hacer con la data para mostrar información aún más relevante para los usuarios (promedio, el valor máximo o mínimo, etc). Esta vez te proponemos una serie de datos de diferentes temáticas para que explores y decidas con qué temática te interesa trabajar. Hemos elegido específicamente estos sets de datos porque creemos que se adecúan bien a esta etapa de tu aprendizaje. Una vez que definas tu área de interés, buscar entender quién es tu usuario y qué necesita saber o ver exactamente; luego podrás construir la interfaz que le ayude a interactuar y entender mejor esos datos.

Nuestro Proceso..

1. Investigar a mi usuario:

Elegimos la data de Juegos Olímpicos y empezamos a entender cuáles eran las necesidades de nuestros usuarios Investigación de Usuarios.

Una vez definimos esto, construimos las historias de usuarios e hicimos lluvia de idea de como queríamos que se viera en pantalla Idea de diseño inicial, lluvia de ideas.

Idea de diseño inicial

Fuimos iterando en el proceso Boceto N0.1

1.1 Historia 0 - Visualizar

“yo como usuario visitante quiero visualizar en la pantalla todos los participantes de los juegos olímpicos”

Criterios de AceptaciĂłn:

  • Visualizar en la pantalla los participantes

DefiniciĂłn de terminado:

  • Que la funciĂłn permita mostrar la informaciĂłn
  • Que tenga estilo segĂşn lo acordado en el prototipo
  • Que estĂ© en el GitHub.

Boceto N0.1

1.2 Historia 1 - Filtrar

“yo como usuario visitante quiero filtrar a los atletas por país, género, deporte y medallas para poder visualizar los atletas.”

Criterios de AceptaciĂłn:

  • Que el usuario pueda seleccionar paĂ­s/gĂ©nero..
  • Que salga la informaciĂłn filtrada en pantalla.

DefiniciĂłn de terminado:

  • Que el usuario pueda interactuar
  • Que la informaciĂłn estĂ© en la pantalla.
  • Que el diseño sea responsive.
  • Que la funciĂłn filtrar pase el test unitario.
  • Que estĂ© en el GitHub.

Boceto N0.3

1.3 Historia 2 - Ordenar

“Yo como usuario visitante quiero ordenar los nombres de los atletas de la a-z o de la z-a para encontrar más rápido al atleta”

Criterios de AceptaciĂłn:

  • Que el usuario seleccione como quiere ordenar.
  • Que el usuario visualicĂ© la informaciĂłn ordenada.

DefiniciĂłn de terminado:

  • Que el usuario pueda interactuar
  • Que la informaciĂłn estĂ© en la pantalla.
  • Que el diseño sea responsive.
  • Que la funciĂłn ordenar pase el test unitario.
  • Que estĂ© en el GitHub.

Hubo un cambio en el diseño, se decidió poner una imagen de fondo en vez de la imagen de las mascotas de los juegos olímpicos, para darle un aspecto visual más profesional.

Boceto N0.3

Hubo un cambio en el diseño, se decidió resaltar los selectores de filtros de la lista de los atletas.

Boceto N0.4

1.4 Historia 3 - Calcular

“Yo como usuario visitante quiero ver cálculos de porcentaje por país vs género y país vs medallero para conocer el porcentaje de mujeres/hombres que participaron. Así mismo, el porcentaje por medalleria.

Criterios de AceptaciĂłn:

  • Que el usuario pueda seleccionar el paĂ­s.
  • Que seleccione la variable que quiere calcular.
  • Que se visualice el resultado.

DefiniciĂłn de terminado:

  • Que el usuario pueda interactuar
  • Que el resultado se muestre en la pantalla.
  • Que el diseño sea responsive.
  • Que la funciĂłn calcular pase el test unitario.
  • Que estĂ© en el GitHub.

Y se agregó la sección donde se visualizarían los cálculos.

Boceto N0.6

Se hizo un diseño final para la pagina web

Boceto N0.3

Diseño Responsivo

Empezamos con movile frist, utilizamos media query para adaptar el diseño a las pantallas. Link a Figma

Formato Celular

Boceto N0.3

Formato Tablet

Boceto N0.3

Formato Computador

Boceto N0.3 Boceto N0.3

¡Prueba nuestra página!

Link a Git-Hub Pages


ĂŤndice

1. Preámbulo

Según Forbes, el 90% de la data que existe hoy ha sido creada durante los últimos dos años. Cada día generamos 2.5 millones de terabytes de datos, una cifra sin precedentes.

No obstante, los datos por sí mismos son de poca utilidad. Para que esas grandes cantidades de datos se conviertan en información fácil de leer para los usuarios, necesitamos entender y procesar estos datos. Una manera simple de hacerlo es creando interfaces y visualizaciones.

En la siguiente imagen, podrás ver cómo con la data que que se ve en la parte izquierda se puede construir una interfaz amigable y entendible por el usuario al lado derecho.

json-interfaz

2. Resumen del proyecto

En este proyecto construirás una página web para visualizar un conjunto (set) de datos que se adecúe a lo que descubras que tu usuario necesita.

Como entregable final tendrás una página web que permita visualizar la data, filtrarla, ordenarla y hacer algún cálculo agregado. Con cálculo agregado nos referimos a distintos cálculos que puedes hacer con la data para mostrar información aún más relevante para los usuarios (promedio, el valor máximo o mínimo, etc).

Esta vez te proponemos una serie de datos de diferentes temáticas para que explores y decidas con qué temática te interesa trabajar. Hemos elegido específicamente estos sets de datos porque creemos que se adecúan bien a esta etapa de tu aprendizaje.

Una vez que definas tu área de interés, buscar entender quién es tu usuario y qué necesita saber o ver exactamente; luego podrás construir la interfaz que le ayude a interactuar y entender mejor esos datos.

Estos son datos que te proponemos:

El objetivo principal de este proyecto es que aprendas a diseñar y construir una interfaz web donde se pueda visualizar y manipular data, entendiendo lo que el usuario necesita.

3. 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

CSS

Web APIs

JavaScript

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)

  • Git: IntegraciĂłn de cambios entre ramas (branch, checkout, fetch, merge, reset, rebase, tag)

  • GitHub: CreaciĂłn de cuenta y repos, configuraciĂłn de llaves SSH

  • GitHub: Despliegue con GitHub Pages

    Links

  • GitHub: ColaboraciĂłn en Github (branches | forks | pull requests | code review | tags)

user-centricity

  • Diseñar un producto o servicio poniendo a la usuaria en el centro

product-design

  • Crear prototipos de alta fidelidad que incluyan interacciones

  • Seguir los principios básicos de diseño visual

research

4. Consideraciones generales

  • Este proyecto se debe resolver en duplas.
  • El proyecto será entregado subiendo tu cĂłdigo a GitHub (commit/push) y la interfaz será desplegada usando GitHub Pages.
  • Tiempo para completarlo: Toma como referencia 4 semanas.

5. Criterios de aceptaciĂłn mĂ­nimos del proyecto

Los criterios para considerar que has completado este proyecto son:

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 usuario.

Historias de usuario

Una vez que entiendas las necesidades de tus usuarios, escribe las Historias de Usuario que representen todo lo que el usuario necesita hacer/ver. Las Historias de Usuario deben ser el resultado de tu proceso de investigaciĂłn o research de tus usuarios.

AsegĂşrate de incluir la definiciĂłn de terminado (definition of done) y los Criterios de AceptaciĂłn para cada una.

En la medida de lo posible, termina una historia de usuario antes de pasar a la siguiente (Cumple con DefiniciĂłn de Terminado + Criterios de AceptaciĂłn).

Diseño de la Interfaz de Usuario

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.

Prototipo de alta fidelidad

Lo siguiente es diseñar tu Interfaz de Usuario (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, PowerPoint, Keynote, 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.

Testeos de usabilidad

Durante el reto deberás hacer tests de usabilidad con distintos usuarios, y en base a 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 Usuario (HTML/CSS/JS)

Luego de diseñar tu interfaz de usuario 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

Como mĂ­nimo, tu implementaciĂłn debe:

  1. Mostrar la data en una interfaz: puede ser un card, una tabla, una lista, etc.
  2. Permitir al usuario interactuar para obtener la infomaciĂłn que necesita.
  3. Ser responsive, es decir, debe visualizarse sin problemas desde distintos tamaños de pantallas: móviles, tablets y desktops.
  4. Que la interfaz siga los fundamentos de visual design.

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.

Tus pruebas unitarias deben dar una cobertura del 70% de statements (sentencias), functions (funciones), lines (líneas), y branches (ramas) del archivo src/data.js que contenga tus funciones y está detallado en la sección de Consideraciones técnicas.

6. Hacker edition

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:

  • En lugar de consumir la data estática brindada en este repositorio, puedes consumir la data de forma dinámica, cargando un archivo JSON por medio de fetch. La carpeta src/data contiene una versiĂłn .js y una .json de de cada set datos.
  • Agregarle a tu interfaz de usuario implementada visualizaciones gráficas. Para ello te recomendamos explorar librerĂ­as de gráficas como Chart.js o Google Charts.
  • 100% Coverage

7. 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, con la excepción de librerías para hacer gráficas (charts); ver Parte opcional más arriba.

El boilerplate contiene una estructura de archivos como punto de partida asĂ­ como toda la configuraciĂłn de dependencias:

.
├── EXTRA.md
├── README.md
├── package.json
├── src
|  ├── data (según con qué data trabajes)
|  |  ├── lol
|  |  |  ├── lol.js
|  |  |  ├── lol.json
|  |  |  └── README.md
|  |  ├── pokemon
|  |  |  ├── pokemon.js
|  |  |  ├── pokemon.json
|  |  |  └── README.md
|  |  └── rickandmorty
|  |  |  ├── rickandmorty.js
|  |  |  ├── rickandmorty.json
|  |  |  └── README.md
|  |  └── athletes
|  |  |  ├── athletes.js
|  |  |  ├── athletes.json
|  |  |  └── README.md
|  |  └── ghibli
|  |  |  ├── ghibli.js
|  |  |  ├── ghibli.json
|  |  |  └── README.md
|  ├── data.js
|  ├── index.html
|  ├── main.js
|  └── style.css
└── test
   └── data.spec.js

directory: 7 file: 20

src/index.html

Como en el proyecto anterior, existe un archivo index.html. Como ya sabes, acá va la página que se mostrará al usuario. También nos sirve para indicar qué scripts se usarán y unir todo lo que hemos hecho.

src/main.js

Recomendamos usar src/main.js para todo tu código que tenga que ver con mostrar los datos en la pantalla. Con esto nos referimos básicamente a la interacción con el DOM. Operaciones como creación de nodos, registro de manejadores de eventos (event listeners o event handlers), ....

Esta no es la única forma de dividir tu código, puedes usar más archivos y carpetas, siempre y cuando la estructura sea clara para tus compañeras.

En este archivo encontrarás una serie de imports comentados. Para cargar las diferentes fuentes de datos tendrás que descomentar la línea correspondiente.

Por ejemplo, si "descomentamos" la siguiente lĂ­nea:

// import data from './data/lol/lol.js';

La lĂ­nea quedarĂ­a asĂ­:

import data from "./data/lol/lol.js";

Y ahora tendrĂ­amos la variable data disponible en el script src/main.js.

src/data.js

El corazón de este proyecto es la manipulación de datos a través de arreglos y objetos.

Te recomendamos que este archivo contenga toda la funcionalidad que corresponda a obtener, procesar y manipular datos (tus funciones). Por ejemplo:

  • filterData(data, condition): esta funciĂłn filter o filtrar recibirĂ­a la data, y nos retornarĂ­a aquellos datos que sĂ­ cumplan con la condiciĂłn.

  • sortData(data, sortBy, sortOrder): esta funciĂłn sort u ordenar recibe tres parámetros. El primer parámetro, data, nos entrega los datos. El segundo parámetro, sortBy, nos dice con respecto a cuál de los campos de la data se quiere ordenar. El tercer parámetro, sortOrder, indica si se quiere ordenar de manera ascendente o descendente.

  • computeStats(data): la funciĂłn compute o calcular, nos permitirá hacer cálculos estadĂ­sticos básicos para ser mostrados de acuerdo a la data proporcionada.

Estos nombres de funciones y de parámetros son solamente referenciales, lo que decidas depende de tu propia implementación.

Estas funciones deben ser puras e independientes del DOM. Estas funciones serán después usadas desde el archivo src/main.js, al cargar la página, y cada vez que el usuario interactúe (click, filtrado, ordenado, ...).

src/data

En esta carpeta están los datos de las diferentes fuentes. Encontrarás una carpeta por cada fuente, y dentro de cada carpeta dos archivos: uno con la extensión .js y otro .json. Ambos archivos contienen la misma data; la diferencia es que el .js lo usaremos a través de una etiqueta <script>, mientras que el .json está ahí para opcionalmente cargar la data de forma asíncrona con fetch() (ver sección de Parte Opcional).

test/data.spec.js

Tendrás también que completar las pruebas unitarias de las funciones implementadas en el archivo data.js.

8. Pistas, tips y lecturas complementarias

Primeros pasos

Antes de empezar a escribir código, debes definir qué deberá hacer el producto en base al conocimiento que puedas obtener de tu usuario. Estas preguntas te pueden ayudar:

  • ÂżQuiĂ©nes son los principales usuarios de producto?
  • ÂżCuáles son los objetivos de estos usuarios en relaciĂłn con el producto?
  • ÂżCuáles son los datos más relevantes que quieren ver en la interfaz y por quĂ©?
  • ÂżCuándo utilizan o utilizarĂ­an el producto?
  • Toda tu investigaciĂłn previa debe tener como resultado todas las Historias de Usuario de tu proyecto.
  • No hagas los prototipos de alta fidelidad de todas tus Historias. Comienza solamente por los que se necesiten para tu Sprint 1 (semana 1 de trabajo). Más pistas en la guĂ­a de organizaciĂłn para el proyecto.

Cuando ya estés lista para codear, te sugerimos empezar de esta manera:

  1. Una de las integrantes del equipo debe realizar un :forkand_knife: fork del repo de tu cohort, tus _coaches te compartirán un link a un repo y te darán acceso de lectura en ese repo. La otra integrante del equipo deber hacer un fork del repositorio de su compañera y configurar un remote hacia el mismo.
  2. :arrowdown: Clona tu _fork a tu computadora (copia local).
  3. 📦 Instala las dependencias del proyecto con el comando npm install. Esto asume que has instalado Node.js (que incluye npm).
  4. Si todo ha ido bien, deberías poder ejecutar las 🚥 pruebas unitarias (unit tests) con el comando npm test.
  5. Para ver la interfaz de tu programa en el navegador, usa el comando npm start para arrancar el servidor web y dirĂ­gete a http://localhost:5000 en tu navegador.
  6. A codear se ha dicho! 🚀

Contenido de referencia

Diseño de experiencia de usuario (User Experience Design)

  • InvestigaciĂłn con usuarios / entrevistas
  • Principios de diseño visual

Desarrollo Front-end

Herramientas

OrganizaciĂłn del Trabajo

Ăšnete al canal de Slack #project-data-lovers

9. Checklist

  • Usa VanillaJS.
  • Pasa linter (npm run pretest)
  • Pasa tests (npm test)
  • Pruebas unitarias cubren un mĂ­nimo del 70% de statements, functions y lines y branches.
  • Incluye DefiniciĂłn del producto clara e informativa en README.md.
  • Incluye historias de usuario en README.md.
  • Incluye sketch de la soluciĂłn (prototipo de baja fidelidad) en README.md.
  • Incluye Diseño de la Interfaz de Usuario (prototipo de alta fidelidad) en README.md.
  • Incluye link a Zeplin en README.md.
  • Incluye el listado de problemas que detectaste a travĂ©s de tests de usabilidad en el README.md.
  • UI: Muestra lista y/o tabla con datos y/o indicadores.
  • UI: Permite ordenar data por uno o más campos (asc y desc).
  • UI: Permite filtrar data en base a una condiciĂłn.
  • UI: Es responsive.

About

🤸‍♂️🚴‍♂️🤾‍♀️🤽‍♂️ Olympic Games. Conoce información sobre los atletas que participaron en los juegos Olimpicos - Segundo proyecto de laboratoria / Lina Alvarado y Daniela Nieto

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 99.4%
  • Other 0.6%