Git Product home page Git Product logo

myriamlab / lim018-card-validation Goto Github PK

View Code? Open in Web Editor NEW

This project forked from laboratoria/lim018-card-validation

0.0 0.0 0.0 5.52 MB

Nivel 1 - Página web del evento online REACT SUMMIT LATAM, donde los usuarios pueden comprar sus entradas y validar el número de una tarjeta de crédito antes de realizar la compra.

Home Page: https://myriamlab.github.io/LIM018-card-validation/src/

JavaScript 28.96% HTML 41.42% CSS 29.62%
html5 javascript css3-flexbox

lim018-card-validation's Introduction

React Summit - LATAM

Es la página web del evento online de REACT en LATAM a realizarse en junio de 2022.

Los usuarios acceden a la página principal. Encuentran una breve descripción del evento y un botón para adquirir los tickets. Este botón los lleva a la página de compra, donde pueden llenar un formulario de pago y comprar.

Imágenes finales del proyecto:

Evento online REACT

Evento online REACT

Investigación UX:

¿Quienes son los principales usuarios de mi producto? Para determinar quiénes son los usuarios elaboré la siguiente historia de usuario:

“COMO estudiante/Developer QUIERO comprar con mi tarjeta de crédito una entrada a través de la página web del evento PARA participar de los talleres online de REACT.”

¿Cómo el producto soluciona los problemas/necesidades de los participantes? La página web ayuda a los usuarios a comprar de forma rápida y segura su entrada con una tarjeta de crédito ocultando parcialmente el número de tarjeta.

A continuación detallo la evolución del prototipo:

Prototipo de baja fidelidad

Evento online REACT

Prototipo de alta fidelidad

Prototipo inicial:

Evento online REACT

Evento online REACT

El feedback recibido

Utilizar una paleta de colores.


Tarjeta de crédito válida

Índice


1. Preámbulo

El algoritmo de Luhn, también llamado algoritmo de módulo 10, es un método de suma de verificación, se utiliza para validar números de identificación; tales como el IMEI de los celulares, tarjetas de crédito, etc.

Este algoritmo es simple. Obtenemos la reversa del número a verificar (que solamente contiene dígitos [0-9]); a todos los números que ocupan una posición par se les debe multiplicar por dos, si este número es mayor o igual a 10, debemos sumar los dígitos del resultado; el número a verificar será válido si la suma de sus dígitos finales es un múltiplo de 10.

gráfica de algoritmo de Luhn

2. Resumen del proyecto

En este proyecto tendrás que construir una aplicación web que le permita a un usuario validar el número de una tarjeta de crédito. Además, tendrás que implementar funcionalidad para ocultar todos los dígitos de una tarjeta menos los últimos cuatro.

La temática es libre. Tú debes pensar en qué situaciones de la vida real se necesitaría validar una tarjeta de crédito y pensar en cómo debe ser esa experiencia de uso (qué pantallas, explicaciones, mensajes, colores, ¿marca?) etc.

Trabajando en parejas aprenderán a construir una aplicación web que interactuará con lx usuarix final a través del navegador, utilizando HTML, CSS y JavaScript como tecnologías.

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)

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)

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

  • GitHub: Despliegue con GitHub Pages

    Links

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

4. Consideraciones generales

  • El equipo de coaches te dará un tiempo sugerido e indicaciones sobre si trabajar sola o en equipo. Recuerda que cada una aprende a diferente ritmo.
  • El proyecto será entregado subiendo tu código a GitHub (commit/push) y la interfaz será desplegada usando GitHub pages. Si no sabes lo que es GitHub, no te preocupes, lo aprenderás durante este proyecto.

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

Usa solo caracteres numéricos (dígitos) en la tarjeta a validar [0-9].

Definición del producto

Los principales usuarios de este producto son estudiantes de tecnología y developers interesados en participar de los talleres online de REACT.

Los usuarios tienen como objetivo comprar su entrada y pagar con su tarjeta de crédito.

Creo que el producto le permite al usuario comprar de forma rápida y segura su entrada.


En el README.md, cuéntanos cómo pensaste en los usuarios y cuál fue tu proceso para definir el producto final a nivel de experiencia y de interfaz.

  • Quiénes son los principales usuarios de producto.
  • Cuáles son los objetivos de estos usuarios en relación con tu producto.
  • Cómo crees que el producto que estás creando está resolviendo sus problemas.

Interfaz de usuario (UI)

La interfaz debe permitir al usuario:

  • Insertar el número que queremos validar.
  • Ver el resultado si es válido o no.
  • Ocultar todos los dígitos de su número de tarjeta menos los últimos 4 caracteres.
  • No debe poder ingresar un campo vacío.

UX (Diseño de experiencia de usuario)

Antes de iniciar a codear, debes entender el problema que quieres solucionar y cómo tu aplicación lo soluciona.

  • Trabaja tu primer prototipo con papel y lápiz (blanco y negro).
  • Luego valida esta solución con una compañera (pedir feedback).
  • Toma lo aprendido al momento de validar tu primer prototipo y desarrolla un nuevo prototipo usando alguna herramienta para diseño de prototipos (Balsamiq, Figma, Google Slides, etc.) Estos puntos los presentarás en el README.md.

Scripts / Archivos

General

README.md

Debe contener lo siguiente:

  • Un título con el nombre de tu proyecto.
  • Un resumen de 1 o 2 líneas de qué se trata tu proyecto.
  • La imagen final de tu proyecto.
  • Investigación UX:
    1. Explicar quiénes son los usuarios y los objetivos en relación con el producto.
    2. Explicar cómo el producto soluciona los problemas/necesidades de dichos usuarios.
    3. Luego colocarás la foto de tu primer prototipo en papel.
    4. Agregar un resumen del feedback recibido indicando las mejoras a realizar.
    5. Imagen del prototipo final.

Visualmente (HTML y CSS)

Deberás maquetar de forma exacta el prototipo final que hiciste en la herramienta de diseño de prototipos que escogiste utilizando HTML y CSS. En este momento elegirás los colores, tipo de fuente, etc a usar.

A continuación describimos los archivos que utilizarás:

src/index.html

En este archivo va el contenido que se mostrará al usuario (esqueleto HTML). Encontrarás 3 etiquetas iniciales, las cuales si deseas puedes borrar y empezar de cero:

  • <header>: encabezado de tu proyecto.
  • <main>: contenido principal de tu proyecto.
  • <footer>: pie de página de tu proyecto.
src/style.css

Este archivo debe contener las reglas de estilo. Queremos que escribas tus propias reglas, por eso NO está permitido el uso de frameworks de CSS (Bootstrap, materialize, etc).

Funcionalmente (JavaScript - pruebas unitarias)

  • La lógica del proyecto debe estar implementada completamente en JavaScript.
  • En este proyecto NO está permitido usar librerías o frameworks, solo JavaScript puro también conocido como Vanilla JavaScript.

Vas a tener 2 archivos JavaScript separando responsabilidades, a continuación indicamos qué harás en cada archivo:

src/validator.js

Acá escribirás las funciones necesarias para que el usuario pueda verificar la tarjeta de crédito y ocultar los dígitos de su número de tarjeta. Esta función debe ser pura e independiente del DOM.

Para esto debes implementar el objeto validator, el cual ya se encuentra exportado en el boilerplate. Este objeto (validator) contiene dos métodos (isValid y maskify):

  • validator.isValid(creditCardNumber): creditCardNumber es un string con el número de tarjeta que se va a verificar. Esta función debe retornar un boolean dependiendo si es válida de acuerdo al algoritmo de Luhn.

  • validator.maskify(creditCardNumber): creditCardNumber es un string con el número de tarjeta y esta función debe retornar un string donde todos menos los últimos cuatro caracteres sean reemplazados por un numeral (#) o 🐱. Esta función deberá siempre mantener los últimos cuatro caracteres intactos, aún cuando el string sea de menor longitud.

    Ejemplo de uso

    maskify('4556364607935616') === '############5616'
    maskify(     '64607935616') ===      '#######5616'
    maskify(               '1') ===                '1'
    maskify(               '')  ===                ''
src/index.js

Acá escribirás todo el código que tenga que ver con la interacción del DOM (seleccionar, actualizar y manipular elementos del DOM y eventos). Es decir, en este archivo deberás invocar las funciones isValid y maskify según sea necesario para actualizar el resultado en la pantalla (UI).

test/validator.spec.js

En este archivo tendrás que completar las pruebas unitarias de las funciones validator.isValid(creditCardNumber) y validator.maskify(creditCardNumber) implementadas en validator.js utilizando Jest. Tus pruebas unitarias deben dar un 70% en coverage (cobertura), statements (sentencias), functions (funciones) y lines (líneas); y un mínimo del 50% de branches (ramas).


6. Pistas, tips y lecturas complementarias

Primeros pasos

  1. Antes que nada, asegúrate de tener un 📝 editor de texto en condiciones, algo como Atom o Code.
  2. Para ejecutar los comandos a continuación necesitarás una 🐚 UNIX Shell, que es un programita que interpreta líneas de comando (command-line interpreter) así como tener git instalado. Si usas un sistema operativo "UNIX-like", como GNU/Linux o MacOS, ya tienes una shell (terminal) instalada por defecto (y probablemente git también). Si usas Windows puedes usar la versión completa de Cmder que incluye Git bash y si tienes Windows 10 o superior puedes usar Windows Subsystem for Linux.
  3. Una de las integrantes del equipo debe realizar un 🍴 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.
  4. ⬇️ Clona tu fork a tu computadora (copia local).
  5. 📦 Instala las dependencias del proyecto con el comando npm install. Esto asume que has instalado Node.js (que incluye npm).
  6. Si todo ha ido bien, deberías poder ejecutar las 🚥 pruebas unitarias (unit tests) con el comando npm test.
  7. 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.
  8. A codear se ha dicho! 🚀

Recursos y temas relacionados

A continuación un video de Michelle que te lleva a través del algoritmo de Luhn y un par de cosas más que debes saber para resolver este proyecto. ¡Escúchala con detenimiento y sigue sus consejos! :)

tips credit card

Link

También una metodología para empezar a desarrollar tareas con JavaScript:

Resolución de problemas con JavaScript

Link

Terminal y shell de UNIX:

Playlist de Terminal y shell de UNIX

Link

Control de versiones y trabajo colaborativo con Git y GitHub:

Playlist de control de versiones y trabajo colaborativo

Link

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

  • Ideación
  • Prototipado (sketching)
  • Testeo e Iteración

Desarrollo Front-end:

Organización del Trabajo:

lim018-card-validation's People

Contributors

myriamlab avatar deysivergara avatar

lim018-card-validation's Issues

HU1 - COMPRAR ENTRADA ONLINE

Título: Comprar entrada online

"Como estudiante/ developer
Quiero comprar mi entrada a través de la página web del evento.
Para participar de los talleres online."


  1. Usuario ingresa a la página web del evento
  2. Verifica el precio y la fecha del evento
  3. Accede al botón de compra

Criterios de Aceptación:

  • Crear la página principal de bienvenida al evento
  • Mostrar la siguiente información:
  • Logo
  • Fecha y hora
  • Breve descripción
  • Precio
  • Botón de conseguir ticket que lleve a la siguiente página y llenar el formulario de compra.
  • Footer con links de navegación al resto de la página:
  • About/ Speakers/ Schedule/ Workshops/FAQ

HU2 - PAGAR CON TARJETA DE CRÉDITO

Título: Pagar entrada con su Tarjeta de crédito

"Como estudiante/ developer.
Quiero pagar mi entrada usando mi tarjeta de crédito VISA.
Para recibir un correo con mi entrada y confirmando mi compra."


  1. Llenar formulario con sus datos personales
  2. Ingresar el número, fecha de vencimiento, CVV de su tarjeta de crédito.
  3. Botón de compra
  4. Encriptar todos los dígitos menos los 4 últimos.
  5. Imprimir mensaje de tarjeta válida

Criterios de aceptación:

  • Crear un formulario con los siguientes inputs:
  • Nombre y apellido del cliente
  • Número de tarjeta
  • Fecha de vencimiento
  • CVV
  • Botón Comprar
  • Crear una función isValid que valide los números de la tarjeta e imprima un mensaje de tarjeta válida.
  • Crear una función maskify que encripte todos los números de la tarjeta menos los 4 últimos
  • Crear evento click para que botón pagar valide y enmascare.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.