¡Demuéstranos lo que sabes!
Como parte de nuestro proceso de selección, nos gustaría ver qué tipo de aplicación eres capaz de desarrollar. Valoraremos muy positivamente cualquier característica adicional, tanto en la aplicación como en el entorno de desarrollo o despliegue, que quieras implementar por tu cuenta.
Enunciado
Queremos que crees una app móvil web progresiva basada en los famosos juegos de puntos incrementales como Cookie Clicker. Si no lo conoces no pasa nada, a continuación te detallamos el funcionamiento del mismo.
La aplicación debe tener una primera vista “home” en la que el usuario introducirá su nombre para registrarse y empezar el juego. Esta primera vista deberá ser la ruta por defecto y cualquier acceso a una ruta que no exista debería redirigir a dicha vista.
La vista “home” contendrá al menos un campo de texto para introducir el nombre del jugador y un botón para iniciar el juego. El botón validará que se ha introducido un nombre de usuario válido antes de iniciar el juego.
Una vez se ha creado el usuario, se transiciona a la vista de juego “game” siendo ésta una nueva ruta dentro de la app.
La vista “game” mostrará el nombre del jugador, los puntos que tiene, un botón para generar más puntos y otro para salir.
Cada vez que se haga click en el botón de la vista, se ganará un punto. Este proceso se podrá repetir indefinidamente
Cuando se alcance un número determinado de puntos, al jugador se le mostrará un nuevo botón para comprar “autoclickers”.
Comprar “autoclickers” costará un número determinado de puntos que será incremental en función del número de “autoclickers” comprados. Se puede usar la siguiente fórmula para el coste de los “autoclickers”:
autoClickerCost = autoClickerBaseCost + autoClickerBaseCost * numAutoClickers
Por cada “autoclicker” comprado, el jugador ganará un punto cada 100 milisegundos. Si el jugador no tiene suficientes puntos para comprar un “autoclicker” el botón se le mostrará deshabilitado.
El botón de salir permitirá volver a la vista “home” y se dejarán de ganar puntos de manera automática para el jugador.
Si en la vista “home” se vuelve a introducir un nombre de jugador que ya existía, se continuará la partida dónde el jugador la dejara.
Si por cualquier motivo se cerrase la aplicación, al volver a acceder se continuará con el mismo estado en el que estaba cuando se cerró, es decir, se deberán persistir los datos de todos los jugadores.
La aplicación deberá funcionar offline, es decir, si en nuestro dispositivo activamos el modo avión y volvemos a la app tras haberla abierto al menos una vez, se podrá acceder a la misma sin problemas.
La aplicación deberá estar desplegada y disponible públicamente.
¡RECUERDA! Los ejemplos visuales mostrados son únicamente orientativos y no deben sesgar tu creatividad.
Requisitos
- La aplicación deberá contener funcionalmente, como mínimo, las instrucciones detalladas en el enunciado.
- El código debe ser público
- Se deberán realizar tests unitarios de las vistas y de los componentes de la aplicación.
- Se podrá utilizar cualquier infraestructura de alojamiento pública como, por ejemplo, Vercel, Netlify o Github Pages.
- Se debe subir un fichero README.md al repositorio con las instrucciones para hacer funcionar la aplicación en local. Puedes añadir cualquier otro dato que consideres necesario.
Otras consideraciones
Se puede utilizar cualquier herramienta, librería o framework, dentro del ecosistema de JavaScript.
Si crees que lo anterior no es suficiente y quieres demostrarnos todo lo que sabes, se valorarán muy positivamente otros puntos como:
- La calidad, claridad y limpieza del código.
- El uso de componentes reutilizables.
- La realización de otro tipo de tests.
- Herramientas de análisis estático y formateo de código que mejoren la experiencia del desarrollador.
- Mejoras en el flujo y la metodología de desarrollo, construcción y despliegue.
- Otras características que consideres importantes para una aplicación web progresiva.
Entregable
Envíanos un enlace al repositorio en el que se encuentre el código de la aplicación y un enlace con la aplicación desplegada.
Bonus points
Si crees que te ha sabido a poco el ejercicio, por aquí te dejamos algunas ideas para mejorarlo, aunque puedes inspirarte en otras aplicaciones similares. ¡Valoraremos muy positivamente cualquier característica adicional! Y… ¡no te olvides de documentar las nuevas funcionalidades!
- Incluir una vista de “ranking” con la máxima puntuación de cada uno de los jugadores registrados.
- Incluir que los números se muestren con unidades cuando sean suficientemente altos. Por ejemplo, 1.00 k, 1.00 m, 1.00 g, …
- Incluir la posibilidad de comprar mejoras que incrementen la productividad de los “autoclickers” a un precio alto.
- Incluir la posibilidad de comprar “megaClickers”, la evolución de los “autoClickers”, un nuevo objeto más caro pero que da mejor rendimiento que su precedesor.
¡Buena suerte!