- 1. Preámbulo
- 2. Resumen del proyecto
- 3. Consideraciones generales
- 4. Objetivos de aprendizaje
- 5. Criterios de aceptación mínimos del proyecto
- 6. Consideraciones técnicas
- 7. Pistas, tips y lecturas complementarias
La manera en que vemos películas ha cambiado radicalmente durante los últimos años debido, en parte, a la aparición de los servicios de streaming que nos permiten hacerlo desde donde estemos y en cualquier momento. El mejor reflejo de este fenómeno es el éxito de Netflix, HBO y Disney+, etc.
En tiempos en los que una de las principales herramientas para combatir la pandemia de Covid-19 es evitar compartir espacios con muchas personas (como en el cine), ver películas por streaming será una de las pocas maneras de hacerlo (¿o la única?).
Creemos que hay una gran oportunidad de proponer productos/experiencias innovadoras de todo tipo utilizando datos de películas (directorxs, actorxs, sagas, secuelas, fechas, etc.). Podríamos pensar en juegos, comunidades, catálogos, recomendaciones basadas en gustos personales, etc. (sólo por mencionar algunas ideas obvias).
La idea de este proyecto es que, usando una API con información de películas, puedas idear, planear, organizar y desarrollar una aplicación web que aproveche estos datos y tenga una propuesta de valor atractiva para lxs usuarixs.
Aunque la decisión de qué hacer es enteramente tuya, hay algunas consideraciones generales que se presentan a continuación. Puedes cumplir esos requisitos en proyectos muy diferentes, ¡depende de tu creatividad y del entendimiento que tengas de tus potenciales usuarixs!
- Este proyecto se debe resolver en equipos de 2 o más personas.
- Debes elegir y sustentar qué problema o necesidad estás resolviendo con el producto que estás diseñando y desarrollando.
- Debes utilizar los datos de la API de OMDB (The Open Movie Database) con Fetch o cualquier otra API que encuentres.
- Piensa en test driven development al momento de programar la solución. Tendrás que escribir las pruebas unitarias, aprovecha la oportunidad de comenzar haciéndolo antes de escribir la funcionalidad.
- Este proyecto es "agnóstico" a la tecnología que uses, es decir puedes desarrollarlo en Vanilla JavaScript o algún framework o biblioteca (librería) de tu elección.
- Intenta pensar en un alcance que, considerando su complejidad y la cantidad de personas en el equipo, permita terminar el proyecto en 2 semanas.
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.
-
Uso de HTML semántico
-
Uso de selectores de CSS
-
Modelo de caja (box model): borde, margen, padding
-
Uso de flexbox en CSS
-
Uso de CSS Grid Layout
-
Uso de media queries
-
Uso de selectores del DOM
-
Manejo de eventos del DOM (listeners, propagación, delegación)
-
Manipulación dinámica del DOM
-
Diferenciar entre tipos de datos primitivos y no primitivos
-
Arrays (arreglos)
-
Objetos (key, value)
-
Variables (declaración, asignación, ámbito)
-
Uso de condicionales (if-else, switch, operador ternario, lógica booleana)
-
Uso de bucles/ciclos (while, for, for..of)
-
Funciones (params, args, return)
-
Pruebas unitarias (unit tests)
-
Módulos de ECMAScript (ES Modules)
-
Uso de linter (ESLINT)
-
Uso de identificadores descriptivos (Nomenclatura y Semántica)
-
Diferenciar entre expresiones (expressions) y sentencias (statements)
-
Components & templates
-
Directivas estructurales (ngIf / ngFor)
-
@Input | @Output
-
Creación y uso de servicios
-
Manejo de rutas
-
Creación y uso de Observables.
-
Uso de HttpClient
-
Estilos de componentes (ngStyle / ngClass)
-
JSX
-
Componentes y propiedades (props)
-
Manejo de eventos
-
Listas y keys
-
Renderizado condicional
-
Elevación de estado
-
Hooks
-
CSS modules
-
React Router
-
Instancia de Vue.js
-
Datos y métodos
-
Uso y creación de componentes
-
Props
-
Directivas (v-bind | v-model)
-
Iteración (v-for)
-
Eventos (v-on)
-
Propiedades Computadas y Observadores
-
Routing
-
Clases y Estilos
-
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
-
GitHub: Colaboración en Github (branches | forks | pull requests | code review | tags)
- Diseñar y desarrollar un producto o servicio poniendo a las usuarias en el centro
-
Crear prototipos de alta fidelidad que incluyan interacciones
-
Seguir los principios básicos de diseño visual
-
Planear y ejecutar testeos de usabilidad de prototipos en distintos niveles de fidelidad
- Utilizar la API de OMDB mediante Fetch para obtener y mostrar una interfaz basada en los datos de cada respuesta.
- Lo que sea que decidas hacer, deberás seleccionar aleatoriamente datos y
mostrarlos en alguna de las características de tu proyecto. Para esto
generalmente se usa el método
random
del objetoMath
en JavaScript. - Tu solución debe ser responsive. Debe adaptarse a pantallas de escritorio, tabletas y teléfonos.
- Debes desplegar tu aplicación usando GitHub Pages.
- Para poder usar la API de OMDB deberás crear una llave (key) de acceso y agregarla a cada petición que hagas al servidor (revisar sección Usage de su sitio web), la llave la generas en este link llenando el formulario con la versión gratuita (free) seleccionada y luego revisando tu email para activarla y poder usarla.
- Recuerda que GitHub Pages sirve sus páginas con un certificado
SSL por lo
que las peticiones a la OMDB deben incluir
https
en la URL. - Recuerda que tienes un máximo de 1.000 peticiones diarias a la API de la OMDB por cada IP, creemos que es suficiente, pero te recomendamos hacer un uso responsable de este recurso gratuito.
- Para este proyecto necesitas crear una Web App con una librería o framework de JavaScript (React, Angular o Vue) y Firebase.
Trata de divertirte. ¡a empezar esta aventura 🎬!