Interpretando las necesidades de un publico joven y tecnológico, un público que desea mantener la privacidad en sus conversaciones, analicé los objetivos de la existencia de esta página para sacar el máximo provecho a todas las posibilidades que Internet le pueda brindar al usuario de diario, ese usurio que usa aplicaciones de mensajería como whats'app, messenger,instagram, etc. Desarrollé y diseñé este proyecto a medida del usuario, para cumplir con las necesidades de cada uno de ellos, buscando una óptima usabilidad para los usuarios finales.
- Los principales usuarios son jovenes que usan aplicaciones de mensajeria por movil, tablet y laptop, usuarios que desean mantener su privacidad.
- El objetivo del usuario es mantener la seguridad de que sus mensajes seran privados.
- La página es útil para los usuarios porque les permite mantener conversaciones con sus amigos o familiares con mensajes cifrados, eligiendo un número de desplazamiento para su cifrado(número de desplazamiento de las letras).
La interfaz debe permitir al usuario:
- elegir un
offset
indicando cuántas posiciones queremos que el cifrado desplace cada caracter - insertar un mensaje (texto) que queremos cifrar
- ver el resultado del mensaje cifrado
- insertar un mensaje (texto) a descifrar
- ver el resultado del mensaje descifrado
README.md
: debe explicar cómo descargar, instalar y ejecutar la aplicación así como una introducción a la aplicación, su funcionalidad y decisiones de diseño que tomaron.src/index.html
: este es el punto de entrada a tu aplicación. Este archivo debe contener to markup (HTML) e incluir el CSS y JavaScript necesario.src/cipher.js
: acá debes implementar el objeto cipher, el cual debe estar exportado en el objeto global (window
). Este objeto (cipher
) debe contener dos métodos:cipher.encode(offset, string)
:offset
es el número de posiciones que queremos mover a la derecha en el alfabeto ystring
el mensaje (texto) que queremos cifrar.cipher.decode(offset, string)
:offset
es el número de posiciones que queremos mover a la izquierda en el alfabeto ystring
el mensaje (texto) que queremos decifrar.
src/index.js
: acá debes escuchar eventos del DOM, invocarcipher.encode()
ocipher.decode()
según sea necesario y actualizar el resultado en la UI.test/cipher.spec.js
: este archivo contiene algunos tests de ejemplo y acá tendrás que implementar los tests paracipher.encode()
ycipher.decode()
.
No estás limitada a implementar solo la parte obligatoria. Te sugerimos crear
también una función cipher.createCipherWithOffset()
que reciba un offset
y
devuelva un nuevo objeto con dos métodos (encode
y decode
) que solo reciban
el string y usen el offset
que se pasó a createCipherWithOffset
a la hora
de crear el objeto.
Lo anterior, nos ayuda a observar tu capacidad de autoaprendizaje, pudiendo agregar a tu trabajo un elemento que lo lleva al siguiente nivel.
Para el diseño de la experiencia de usuario, puedes investigar y aplicar algunas de las técnicas y herramientas relacionadas al proceso de diseño como entrevistas y testeos con usuarios o sketching y prototipado.
Lo mismo en habilidades blandas, puedes realizar una planificación experta teniendo en consideración la utilización de herramientas de planificación, como un calendario, trello, papelógrafo u otras, creando un plan paso a paso de cómo quiere abarcar el reto o problema. Realizando una estimación realista del tiempo.
El proyecto será entregado subiendo tu código a GitHub (commit
/push
) y la
interfaz será desplegada usando GitHub pages.
Te aconsejamos revisar la rúbrica para ver la descripción detallada de cada habilidad y cada nivel.
Característica/Habilidad | Nivel esperado |
---|---|
Completitud | 3 |
Investigación | 3 |
Documentación | 2 |
Habilidad | Nivel esperado |
---|---|
JavaScript | |
Estilo | 2 |
Nomenclatura/semántica | 2 |
Funciones/modularidad | 1 |
Estructuras de datos | 0 |
Tests | 2 |
HTML | |
Validación | 2 |
Estilo | 3 |
Semántica | 2 |
SEO | 0 |
CSS | |
DRY | 2 |
Responsive | 2 |
SCM | |
Git | 1 |
GitHub | 2 |
CS | |
Lógica | 1 |
Arquitectura | 1 |
Patrones/paradigmas | 0 |
Habilidad | Nivel esperado |
---|---|
User Centricity | 2 |
Para este reto queremos que intentes llegar al nivel 2 por lo menos en 5 de tus habilidades blandas y que tengas el nivel 1 en sólo 3 habilidades.
Habilidad | Nivel esperado |
---|---|
Planificación y organización | 2 |
Autoaprendizaje | 2 |
Solución de problemas | 2 |
Dar y recibir feedback | 2 |
Adaptabilidad | 2 |
Trabajo en equipo | 1 |
Comunicación eficaz | 1 |
Presentaciones | 1 |
Este proyecto en el bootcamp te otorgará 100 XP (Puntos de experiencia).
- Antes que nada, asegúrate de tener un 📝 editor de texto en condiciones, algo como Atom o Code.
- 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 Git bash, aunque recomendaría que consideres probar 🐧 GNU/Linux. - Haz tu propio 🍴 fork del repo de tu cohort, tus coaches te compartirán un link a un repo privado y te darán acceso de lectura en ese repo.
- ⬇️ Clona tu fork a tu computadora (copia local).
- 📦 Instala las dependencias del proyecto con el comando
npm install
. Esto asume que has instalado Node.js (que incluye npm). - Si todo ha ido bien, deberías poder ejecutar las 🚥
pruebas unitarias (unit tests) con el comando
npm test
. - A codear se ha dicho! 🚀
A continuación un video de Michelle que te lleva a través de la fórmula matemática del Cifrado César y un par de cosas más que debes saber para resolver este proyecto. ¡Escúchala con detenimiento y sigue sus consejos! :)
También te compartimos más información de lo que Michelle te ha explicado en el video anterior:
- Aprende más sobre
charCodeAt()
- Aprende más sobre
String.fromCharCode()
- Aprende más sobre
ASCII
- Documentación de NPM
Estos son algunos tips que te pueden ayudar en la organización y realización de tu proyecto, teniendo en cuenta el desarrollo de tus habilidades blandas:
- Para comenzar realiza una organización de tu proyecto, ve con qué recursos cuentas y el tiempo que tienes para completarlo.
- Si hay algo que no sepas pregunta e intenta resolverlo; puedes comenzar con una búsqueda en google, luego consultando a tu squad y por último a tus coaches. Si hay algo que yo no sé, otro me puede ayudar. El aprendizaje es un proceso colaborativo.
- Una vez que empieces a avanzar pide feedback, tus compañeras pueden tener excelentes ideas o formas de resolver el proyecto que te pueden ayudar.
- Cuando te topes con un problema, busca alternativas, y para eso consulta diferentes fuentes.
- Si ya te ves invirtiendo mucho tiempo en detalles debes saber priorizar y seguir con lo más importante, los proyectos tienen tiempo limitado y debes saber administrarlo.
- Trabaja en equipo, pregunta e intenta completar el proyecto sin rendirte.
- Prepara tu presentación, si no logro comunicar mis ideas a los demás no se podrá apreciar todo el esfuerzo y trabajo que invertiste.
El código de sli.do para el proyecto 1 :
- Turno am: U414