Skip to content

🎞📕🎥 -📲 Binge Worthy- Es una red social dónde su comunidad puede compartir, encontrar y ofrecer las mejores recomendaciones de series, libros y películas. Además de publicar, editar y borrar, también podra ver publicaciones de otras personas.

Notifications You must be signed in to change notification settings

elianamendez1/LIM017-social-network

 
 

Repository files navigation

Creando una Red Social : 📲 Binge Worthy

Introducción

Binge Worthy significa digno de atracones, una red social dónde su comunidad puede encontrar y ofrecer las mejores recomendaciones de series, libros y películas.

Descripción del proyecto

¿Quiénes son los principales usuarios del producto?

"El entretenimiento ha estado presente en la vida de los seres humanos desde tiempos inmemoriales. Incluso los animales buscan la manera de entretenerse en su hábitat y crean rituales con el mismo fin". Cuando se habla de entretenimiento, se habla de mucho más que de pasar el rato con fines recreativos, y las historias en todos los formatos ofrecen uno de las mejores opciones de entretenimiento para las personas.

¿Qué problema resuelve el producto?

¿Estás buscando comedias con las que reírte un rato? ¿Clásicos imprescindibles que hay que ver al menos una vez en la vida? ¿Una película de acción que te dé un subidón de adrenalina? ¿O quizás alguno de esos dramas lacrimógenos para llorar a moco tendido? Tras más de un siglo de existencia del séptimo arte, las opciones son muchísimas. Y difícilmente encontrar algo sin durar horas buscando entre artículos de recomendaciones y perdiendo el tiempo disponible para el entretenimiento. Por ello, Binge Worthy viene a solucionarlo ofreciendo filtros que te ayudarán en la búsqueda de recomendaciones para hacer match, con tu historia favorita, en cualquiera de los formatos como series, libros y películas. Desde las manos de otros cinéfilos aficionados como tú.

Proceso creativo de diseño

Historias de usuario

Imagen text

Historia Usuario 1⃣

Criterios de aceptación

  • ✔️ Botón en la página de bienvenida para ir al registro.
  • ✔️ Campo de input para correo electrónico.
  • ✔️ Campo de input para contraseña.
  • ✔️Mostrar y ocultar contraseña.
  • ✔️ Botón de crear cuenta.
  • ✔️ Si coinciden, redirige a una página de confirmar correo electrónico.

Definición de terminado

  • ✔️Versión 1 de la App Binge Worthy completada en la rama Main "tree clean".
  • ✔️ Debe ser una SPA.
  • ✔️ Debe ser responsive.
  • ✔️ Deben haber recibido code review de al menos una compañera de otro equipo.
  • ✔️ Pasaron los test unitarios.
  • ✔️ Test manual buscando errores e imperfecciones simples.
  • ✔️ Etiqueta de versión (git tag).

Historia Usuario 2⃣

Criterios de aceptación

  • ✔️ Contraseña ocultable.
  • ✔️ Floating label para campos de email y contraseña.
  • ✔️ Botón de olvidé mi contraseña "i forgot my password".
  • ✔️ Botón de login que redirige lleva al muro.

Definición de terminado

  • ✔️Versión 1 de la App Binge Worthy completada en la rama Main "tree clean".
  • ✔️ Debe ser una SPA.
  • ✔️ Debe ser responsive.
  • ✔️ Deben haber recibido code review de al menos una compañera de otro equipo.
  • ✔️ Pasaron los test unitarios.
  • ✔️ Test manual buscando errores e imperfecciones simples.

Historia Usuario 3⃣

Criterios de aceptación

  • ✔️ Botón para el registro con el logo de Google con redirección al Feed.
  • ✔️ Botón para el registro con el logo de Facebook con redirección al Feed.

Definición de terminado

  • ✔️ Versión 1 de la App Binge Worthy completada en la rama Main "tree clean".
  • ✔️ Debe ser una SPA.
  • ✔️ Debe ser responsive.
  • ✔️ Deben haber recibido code review de al menos una compañera de otro equipo.
  • ✔️ Pasaron los test unitarios.
  • ✔️ Test manual buscando errores e imperfecciones simples.

Historia Usuario 4⃣

Criterios de aceptación

  • ✔️ Barra de navegación.
  • ✔️ Botones para los filtros.
  • ✔️ Botón de crear publicación.

Definición de terminado

  • ✔️ Versión 1 de la App Binge Worthy completada en la rama Main "tree clean".
  • ✔️ Debe ser una SPA.
  • ✔️ Debe ser responsive.
  • ✔️ Deben haber recibido code review de al menos una compañera de otro equipo.
  • ✔️ Pasaron los test unitarios.
  • ✔️ Test manual buscando errores e imperfecciones simples.
  • ✔️ Etiqueta de versión (git tag).

Historia Usuario 5⃣

Criterios de aceptación

  • ✔️ Modal para crear publicación.
  • ✔️ Campo de input para ingresar título de publicación.
  • ✔️ Tener una Text content donde el usuario pueda ingresar su publicación.
  • ✔️ Campo de select para que el usuario agregue categoría de publicación.
  • ✔️ Botón de publicar.
  • ✔️ Al realizar la publicación asignarle una fecha y hora exacta para su organización en el feed.

Definición de terminado

  • ✔️ Versión 1 de la App Binge Worthy completada en la rama Main "tree clean".
  • ✔️ Debe ser una SPA.
  • ✔️ Debe ser responsive.
  • ✔️ Deben haber recibido code review de al menos una compañera de otro equipo.
  • ✔️ Pasaron los test unitarios.
  • ✔️ Test manual buscando errores e imperfecciones simples.
  • ✔️ Etiqueta de versión (git tag).

Historia Usuario 6⃣

Criterios de aceptación

  • ✔️ Publicaciones ordenadas de acuerdo a la fecha automáticamente.
  • ✔️ Publicaciones más recientes aparecen primero.

Definición de terminado

  • ✔️ Versión 1 de la App Binge Worthy completada en la rama Main "tree clean".
  • ✔️ Debe ser una SPA.
  • ✔️ Debe ser responsive.
  • ✔️ Deben haber recibido code review de al menos una compañera de otro equipo.
  • ✔️ Pasaron los test unitarios.
  • ✔️ Test manual buscando errores e imperfecciones simples.
  • ✔️ Etiqueta de versión (git tag).

Historia Usuario 7⃣

Criterios de aceptación

  • ✔️ Boton con ícono para eliminar.
  • ✔️ Ventana modal de ¿estás seguro de eliminar?
  • ✔️ Botón de aceptar eliminar.
  • ✔️ Botón de cancelar eliminar.
  • ✔️ Eliminar de la base de datos la publicación.

Definición de terminado

  • ✔️ Versión 1 de la App Binge Worthy completada en la rama Main "tree clean".
  • ✔️ Debe ser una SPA.
  • ✔️ Debe ser responsive.
  • ✔️ Deben haber recibido code review de al menos una compañera de otro equipo.
  • ✔️ Pasaron los test unitarios.
  • ✔️ Test manual buscando errores e imperfecciones simples.

Historia Usuario 8⃣

Criterios de aceptación

  • ✔️ Boton con ícono para editar
  • ✔️ Botón de editar - redirecciona al modal para editar - (misma de publicar solo que con los datos de la publicación a modificar).
  • ✔️ Verificación de que la publicación no se duplique sino que se modifique.

Definición de terminado

  • ✔️ Versión 1 de la App Binge Worthy completada en la rama Main "tree clean".
  • ✔️ Debe ser una SPA.
  • ✔️ Debe ser responsive.
  • ✔️ Deben haber recibido code review de al menos una compañera de otro equipo.
  • ✔️ Pasaron los test unitarios.
  • ✔️ Test manual buscando errores e imperfecciones simples.

Historia Usuario 9⃣

Criterios de aceptación

  • ✔️ Boton con ícono de corazón para dar Like.
  • ✔️ Ícono de like se colorea cuando se presiona y al quitar el like de descolorea.

Definición de terminado

  • ✔️ Versión 1 de la App Binge Worthy completada en la rama Main "tree clean".
  • ✔️ Debe ser una SPA.
  • ✔️ Debe ser responsive.
  • ✔️ Deben haber recibido code review de al menos una compañera de otro equipo.
  • ✔️ Pasaron los test unitarios.
  • ✔️ Test manual buscando errores e imperfecciones simples.
  • ✔️ Etiqueta de versión (git tag).

🖥 Prototipo de alta fidelidad para escritorio 🖥

Imagen text

Imagen text

📱 Prototipo de alta fidelidad para Móvil 📱

Imagen text

Imagen text

Índice

1. Preámbulo

Instagram, Snapchat, Twitter, Facebook, Twitch, Linkedin, etc. Las redes sociales han invadido nuestras vidas. Las amamos u odiamos, y muchos no podemos vivir sin ellas.

adem-ay-Tk9m_HP4rgQ-unsplash

Hay redes sociales de todo tipo y para todo tipo de intereses. Por ejemplo, en una ronda de financiamiento con inversionistas, se presentó una red social para químicos en la que los usuarios podían publicar artículos sobre sus investigaciones, comentar en los artículos de sus colegas, y filtrar artículos de acuerdo a determinadas etiquetas o su popularidad, lo más reciente, o lo más comentado.

2. Resumen del proyecto

En este proyecto construirás una Red Social sobre lo que decidan tú y tu equipo. Podría ser, por ejemplo, sobre alimentación saludable, feminismo, educación, salud, energías renovables, amantes de las Empanadas o de los Tacos de Canasta, de la Feijoada, o de lo que sea.

Tu Red Social tendrá que permitir a cualquier usuario crear una cuenta de acceso y loguearse con ella; crear, editar, borrar y "likear" publicacciones.

El objetivo principal de aprendizaje de este proyecto es construir una Single-page Application (SPA) responsive (con más de una vista / página) en la que podamos leer y escribir datos.

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

  • Uso de linter (ESLINT)

  • Uso de identificadores descriptivos (Nomenclatura y Semántica)

  • Diferenciar entre expresiones (expressions) y sentencias (statements)

  • Callbacks

    Links

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)

  • GitHub: Organización en Github (projects | issues | labels | milestones | releases)

UX (User eXperience)

  • Diseñar la aplicación pensando en y entendiendo al usuario
  • Crear prototipos para obtener feedback e iterar
  • Aplicar los principios de diseño visual (contraste, alineación, jerarquía)
  • Planear y ejecutar tests de usabilidad

Firebase

4. Consideraciones generales

  • Este proyecto se debe trabajar en equipos de tres.

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

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

  • Solamente pueden trabajar en una única historia por vez, no pueden avanzar a la siguiente sin haber completado la anterior. La historia se completa cuando se cumplen todos sus Criterios de Aceptación + toda su Definición de Terminado.

Para comenzar tendrás que hacer un fork y clonar este repositorio.

5. Criterios de aceptación mínimos del proyecto

5.1 Boilerplate

Este proyecto no incluye un boilerplate, así es que tendrás que definir la estructura de carpetas y escribir tus propias Pruebas Unitarias (tests). Para hacerlo, puedes guiarte de los proyectos anteriores.

5.2 Definición del producto

En el README.md cuéntanos brevemente cómo descubriste las necesidades de los usuarios y cómo llegaste a la definición final de tu producto. Es importante que detalles:

  • Quiénes son los principales usuarios de producto.
  • Qué problema resuelve el producto / para qué le servirá a estos usuarios.

5.3 Historias de usuario

Una vez que entiendas las necesidades de tus usuarixs, escribe las Historias de Usuario que representen todo lo que necesitan hacer/ver en la Red Social. Cada una de tus Historias de Usuario debe tener:

  • Criterios de Aceptación: todo lo que debe ocurrir para satisfacer las necesidades del usuario.

  • Definición de terminado: todos los aspectos técnicos que deben cumplirse para que, como equipo, sepan que esa historia está terminada y lista para publicarse. Todas tus Historias de Usuario (salvo excepciones), deben incluir estos aspectos en su Definición de Terminado (más todo lo que necesiten agregar):

    • Debe ser una SPA.
    • Debe ser responsive.
    • Deben haber recibido code review de al menos una compañera de otro equipo.
    • Hicieron los test unitarios
    • Testearon manualmente buscando errores e imperfecciones simples.
    • Hicieron pruebas de usabilidad e incorporaron el feedback de los usuarios como mejoras.
    • Desplegaron su aplicación y etiquetaron la versión (git tag).

5.4 Diseño de la Interfaz de Usuario (prototipo de baja fidelidad)

Debes definir cuál será el flujo que seguirá el usuario dentro de tu aplicación y, con eso, diseña la Interfaz de Usuario (UI por sus siglas en inglés) que siga este flujo.

5.5 Responsive

Debe verse bien en dispositivos de pantallas grandes (computadoras/es, laptops, etc.) y pequeñas (tablets, celulares, etc.). Te sugerimos seguir la técnica de mobile first (más detalles sobre esta técnica al final).

Para ayudar en el proceso de diseño, te proporcionamos un layout (diseño) de la vista mobile y desktop que puedes usar como referencia y cuyo contenido, colores y fuentes de texto, dejaremos a tu elección.

  • Vista mobile mobile
  • Vista Desktop desktop

5.6 Consideraciones del comportamiento de la interfaz de usuario (UI)

Estas consideraciones te ayudarán a escribir las Definiciones de Terminado de tus H.U.:

Creación de cuenta de usuario e inicio de sesión

  • Login con Firebase:
    • Para el login y las publicaciones en el muro puedes utilizar Firebase
    • Creación de cuenta de acceso y autenticación con cuenta de correo y contraseña, y también con una cuenta de Google.
  • Validaciones:
    • Solamente se permite el acceso a usuarios con cuentas válidas.
    • No pueden haber usuarios repetidos.
    • La cuenta de usuario debe ser un correo electrónico válido.
    • Lo que se escriba en el campo (input) de contraseña debe ser secreto.
  • Comportamiento:
    • Al enviarse el formulario de registro o inicio de sesión, debe validarse.
    • Si hay errores, se deben mostrar mensajes descriptivos para ayudar al usuario a corregirlos.

Muro/timeline

  • Validaciones:
    • Al publicar, se debe validar que exista contenido en el input.
  • Comportamiento:
    • Al recargar la aplicación, se debe verificar si el usuario está logueado antes de mostrar contenido.
    • Poder publicar un post.
    • Poder dar y quitar like a una publicación. Máximo uno por usuario.
    • Llevar un conteo de los likes.
    • Poder eliminar un post específico.
    • Pedir confirmación antes de eliminar un post.
    • Al dar click para editar un post, debe cambiar el texto por un input que permita editar el texto y luego guardar los cambios.
    • Al guardar los cambios debe cambiar de vuelta a un texto normal pero con la información editada.
    • Al recargar la página debo de poder ver los textos editados.

5.7 Consideraciones técnicas Front-end

  • Separar la manipulación del DOM de la lógica (Separación de responsabilidades).
  • Contar con múltiples vistas. Para esto, tu aplicación debe ser una Single Page Application (SPA)
  • Alterar y persistir datos. Los datos que agregues o modifiques deberán persistir a lo largo de la aplicación. Te recomendamos que uses Firebase para eso también.

Pruebas unitarias (unit tests)

  • Recuerda que no hay un setup de tests definido, dependerá de la estructura de tu proyecto. Algo que no debes de olvidar es pensar en éstas pruebas, te pueden ayudar a definir la estructura y nomenclatura de tu lógica.

  • Los tests unitarios deben cubrir un mínimo del 70% de statements, functions, lines, y branches.

5.8 Consideraciones técnicas UX

  • Hacer al menos 2 entrevistas con usuarios.
  • Hacer un prototipo de baja fidelidad.
  • Asegurarte de que la implementación en código siga los lineamientos del diseño.
  • Hacer sesiones de testing de usabilidad con el producto en HTML.

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.

  • Permite crear posts con imágenes.
  • Permite buscar usuarios, agregar y eliminar "amigos".
  • Permite definir la privacidad de los posts (público o solamente para amigos).
  • Permite ver su muro de cualquier usuario "no-amigo" (solamente los posts públicos).
  • Permite comentar o responder una publicación.
  • Permite editar perfil.

7. Entrega

El proyecto será entregado subiendo tu código a GitHub (commit/push) y la interfaz será desplegada usando GitHub pages u otro servicio de hosting que puedas haber encontrado en el camino.


8. Pistas, tips y Lecturas complementarias

Mobile first

El concepto de mobile first hace referencia a un proceso de diseño y desarrollo donde partimos de cómo se ve y cómo funciona la aplicación en un dispositivo móvil primero, y más adelante se ve como adaptar la aplicación a pantallas progresivamente grandes y características específicas del entorno desktop. Esto es en contraposición al modelo tradicional, donde primero se diseñaban los websites (o webapps) para desktop y después se trataba de arrugar el diseño para que entre en pantallas más chicas. La clave acá es asegurarse de que desde el principio diseñan usando la vista responsive de las herramientas de desarrollador (developer tools) del navegador. De esa forma, partimos de cómo se ve y comporta la aplicación en una pantalla y entorno móvil.

Múltiples vistas

En proyectos anteriores nuestras aplicaciones habían estado compuestas de una sola vista principal (una sóla página). En este proyecto se introduce la necesidad de tener que dividir nuestra interfaz en varias vistas o páginas y ofrecer una manera de navegar entre estas vistas. Este problema se puede afrontar de muchas maneras: con archivos HTML independientes (cada uno con su URL) y links tradicionales, manteniendo estado en memoria y rederizando condicionalmente (sin refrescar la página), manipulando el historial del navegador con window.history. En este proyecto te invitamos a explorar opciones y decidir una opción de implementación.

Escritura de datos

En los proyectos anteriores hemos consumido (leído) datos, pero todavía no habíamos escrito datos (salvar cambios, crear datos, borrar, ...). En este proyecto tendrás que crear (salvar) nuevos datos, así como leer, actualizar y modificar datos existentes. Estos datos se podrán guardar de forma remota usando Firebase.

Otras:

About

🎞📕🎥 -📲 Binge Worthy- Es una red social dónde su comunidad puede compartir, encontrar y ofrecer las mejores recomendaciones de series, libros y películas. Además de publicar, editar y borrar, también podra ver publicaciones de otras personas.

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • JavaScript 56.0%
  • CSS 43.3%
  • HTML 0.7%