Skip to content

sumaqkuyay/LIM012-fe-social-network

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

1 Commit

Repository files navigation

Creando una Red Social

Bienvenida a tu primer proyecto del track de Frontend en Laboratoria.

En este proyecto construir谩s una red social, cuya tem谩ticas dejaremos a tu elecci贸n.

Aqu铆 algunas ideas para inspirarte:

  • Alimentaci贸n
  • Feminismo
  • Educaci贸n
  • Salud
  • Energ铆as Renovables

Las carater铆sticas t茅cnicas de tu aplicaci贸n ser谩n las siguientes:

Para implementar tu aplicaci贸n usar谩s HTML5, CCS3 o SASS, Vanilla JavaScript(ES6+), Firebase o LocalStogarge

Objetivo

El objetivo de este proyecto es construir una Red Social, Single-Page Application (SPA), responsiva en la que podamos escribir, leer, actualizar y eliminar datos.

Para ello deber谩s poner en juego tu creatividad para generar ideas que lleven a una soluci贸n original y valiosa del problema, trabajando en equipo buscando feedback constante.

En otras palabras, seguir谩s afianzando todo lo aprendido en el Common Core, pero en particular ver谩s :

Planificaci贸n

  • Te recomendamos utilizar projects, issues y milestones de GitHub para gestionar la planificaci贸n de tu proyecto. Estos recursos ser谩n la fuente de organizaci贸n de tu equipo y a trav茅s de estas herramientas tus coaches podr谩n ver el avance del proyecto y darte feedback.

  • Escribir, de manera colaborativa, las Definiciones de terminado y Criterios de Aceptaci贸n por cada Historia de usuario que te daremos para este proyecto y que se deber谩n ver reflejadas en tu planificaci贸n.

  • Priorizar la implementaci贸n de tus funcionalidades, en funci贸n al esfuerzo que demandan en relaci贸n al valor que le aportan al usuario, y ejecutar en equipo todas las historias de usuario dentro del tiempo estimado para cada sprint y que finalmente se vean reflejadas en publicaciones completamentamente funcionales al final de cada sprint.

  • Adquirir la disciplina de la completitud, terminando una historia de usuario antes de pasar a la siguiente (es decir, que cumple con Definici贸n de Terminado y Criterios de Aceptaci贸n contemplando todos los puntos que son objetivos de aprendizaje para este proyecto).

Desarrollo frontend

Arquitectura de la aplicaci贸n

  • Dise帽ar la arquitectura de tu aplicaci贸n, modularizando tu c贸digo a trav茅s de es modules (import y export)

  • Familiarizarte con el patr贸n modelo - vista - controlador (MVC).

Tecnolog铆as HTML5 y CSS3/SASS

  • Aplicar HTML5 sem谩ntico en tu proyecto.
  • Aplicar y reforzar los conceptos fundamentales de CSS3.
  • Implementar selectores de clase evitando la redundancia de estilos en CCS3.
  • Utilizar flexbox para lograr un dise帽o mobile first, implementando un layout que te permita crear un dise帽o adaptativo para mobile y desktop

A continuaci贸n te proporcionamos el layout (dise帽o) de la vista mobile y desktop que deber谩s replicar visualmente y cuyo contenido, colores y fuentes de texto, dejaremos a tu elecci贸n.

  • Vista mobile

    mobile

  • Vista Desktop

    desktop

JavaScript (ES6+)

  • Utilizar modulos de ES6 para poder modularizar tu c贸digo JavaScript.
  • Reforzar tu conocimiento sobre el uso de Template literals (Template strings).
  • Reforzar tu conocimiento de la manipulacion de los elementos del DOM a traves JavaScript.
  • Implementar un sistema de rutas para cambiar de una vista a otra de manera din谩mica (SPA).
  • Testear la l贸gica de tu aplicaci贸n, con Jest cuidando que el coverage pase el 90% de statements (sentencias), functions (funciones), lines (l铆neas), y branches (ramas).

Persistencia de datos

En los proyectos anteriores solo has consumido (le铆do) datos, por ejemplo, a trav茅s de un archivo json o utilizando fetch.

En este proyecto dise帽ar谩s la estructura de esos datos, la forma de consultarlos, actualizarlos, modificarlos y eliminarlos seg煤n los requerimiento del usuario. Para llevarlo a cabo utilizaras Firestore de Firebase o LocalStogarge una Web Storage API

Firebase

El objetivo de usar Firestore en este proyecto, es que aprendes a manejar y persistir datos a traves de una base de datos no relacional, en tiempo real y puedas implementar operaciones CRUD (Creaci贸n, Lectura, Actualizaci贸n y eliminaci贸n) de datos.

Consideraciones generales del proyecto

  • Este proyecto debe ser desarrollado en equipos de trabajo de 3 integrantes.

  • La duraci贸n propuesta del proyecto es 3 sprints, con una duraci贸n de una semana cada uno.

  • Te daremos las historias de usuario con el fin de presentarte los requerimientos y funcionalidades que desea el usuario final.

  • La planificaci贸n es vital, para ello te recomendamos utilizar el flujo de trabajo colaborativo que nos ofrecen los projects de GitHub, para que puedas escribir tus definiciones de terminado y criterios de aceptaci贸n por cada historia de usuario con el objetivo que determinen, en equipo, qu茅 hacer en el sprint y c贸mo se realizar谩.

  • Para que todas las miembros de tu equipo puedan lograr los objetivos de aprendizaje, deber谩n determinar cu谩l ser谩 la estrategia de desarrollo que utilizar谩n: divisi贸n por sub-historias, pair programming, code reviews, etc.

Restricciones T茅cnicas

  • Debes utilizar flexbox para posicionar tus elementos. No est谩 permitido el uso de frameworks de CCS (bootstrap), ni de componentes flotantes.

  • Ya te damos un dise帽o (layout) de la vista mobile y desktop, queremos que lo repliques a nivel pixel perfect, el contenido, paleta de colores y fuentes, depende de la tem谩tica que van a elegir como equipo. La implementaci贸n de ese layout deber谩 formar parte de la definici贸n de terminado de tus historias de usuario.

  • Los test son fundamentales y deber谩n formar parte de tu definici贸n de terminado, te recomendamos que comiences a implementarlos desde el comienzo.

Historias de Usuario

  • Como usuario nuevo debo poder crear una cuenta con email y password v谩lidos para poder iniciar sesion e ingresar a la red social.

  • Como usuario nuevo debo poder tener la opci贸n de iniciar sesi贸n con mi cuenta de Google o Facebook para ingresar a la red social sin necesidad de crear una cuenta de email v谩lido.

  • Como usuario loggeado debo poder crear, guardar, modificar en el mismo lugar (in place) y eliminar una publicaci贸n (post) privada o p煤blica, que puede ser una frase o una imagen.

  • Como usuario loggeado debo poder ver todos los posts p煤blicos y privados que he creado hasta ese momento, desde el m谩s reciente hasta el m谩s antiguo, as铆 como la opci贸n de poder cambiar la configuraci贸n de privacidad de mis post.

  • Yo como usuario loggeado, puedo dar like y llevar un conteo de likes en mi publicaci贸n as铆 como poder escribir, guardar, editar o eliminar un comentario en mi publicaci贸n.

  • Al final debo poder ingresar a la red social y poder visualizar los datos de mi perfil creado o editarlos.

  • Te dejamos un ejemplo de c贸mo definir criterios de aceptaci贸n y definiciones de terminado para una H.U. Si se te complica definirlas o no tienes idea de que considerar para cada H.U. es de gran ayuda revisar redes sociales como facebok, twitter, instagram, devopedia o la red social que m谩s te guste y puedas evaluar qu茅 consideran en cada funcionalidad para darla como terminada y aceptada.

    Como usuario nuevo debo poder crear una cuenta con email y password para poder iniciar sesion. Por otro lado, necesito tambi茅n tener la opci贸n de iniciar sesi贸n con mi cuenta de Google o Facebook.

    Criterios de aceptaci贸n

    • Si el mail o password no es v谩lido, al momento de logearme, debo poder ver un mensaje de error.
    • Debe ser visible si hay alg煤n mensaje de error.
    • Debo poder ver esta p谩gina de creaci贸n en M贸viles y desktop (responsive).
    • No debe necesitar recargar la p谩gina para crear una cuenta (SPA).

    Definici贸n de terminado

    • La funcionalidad cumple satisface los criterios de aceptaci贸n.
    • La funcionalidad tiene test unitarios.
    • El dise帽o visual corresponde al prototipo de alta fidelidad.
    • El c贸digo de esta funcionalidad recibi贸 code review.
    • La funcionalidad esta desplegada y p煤blica para ser probada.
    • La funcionalidad fue probada manualmente.
    • Se hicieron pruebas de usuabilidad y se implement贸 el feedback si se consider贸 necesario.

Objetivos de aprendizaje

Antes de empezar el proyecto, recuerda agregar tus objetivos de aprendizaje pendientes de tu proyecto anterior en la siguiente secci贸n.

Objetivos de aprendizajes pendientes

HTML y CSS

DOM y Web APIs

Javascript

Firebase

Testing

Colaboraci贸n en Github

  • Branches
  • Pull Requests
  • Tags

Organizaci贸n en Github

  • Projects
  • Issues
  • Labels
  • Milestones

Buenas pr谩cticas de desarrollo

  • Modularizaci贸n
  • Nomenclatura / Sem谩ntica
  • Linting

Recursos

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

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 Firestore o de forma local utilizandolocalStorage.

Autenticaci贸n y autorizaci贸n

Hasta el momento, los proyectos han sido pensados como recursos p煤blicos, donde todos los usuarios compart铆an un mismo rol y la misma informaci贸n.

En este proyecto tendr谩s que diferenciar la informaci贸n a mostrar y modificar, dependiendo de la identidad del usuario. De la misma manera deber谩s crear reglar de autorizaci贸n para el acceso a los datos.

Para esto utilizaras respectivamente Firebase authentication y Firestore security rules

CSS

En este proyecto queremos que ganes confianza y experiencia con CSS profesional, por eso usar谩s flexbox para posicionar tus elementos.

Recuerda que no puedes usar frameworks CSS, s贸lo vanilla css o sass.

Otras:


About

Red Social : YachayWasi 馃彨 by Lourdes M. Sabina C. and Viviana G.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 53.4%
  • HTML 46.6%