Desafío de programación dividido en tres retos donde los participantes tendrán que trabajar con el backend que les toque en suerte, aunque podrán elegir el lenguaje de programación con el que quieren trabajar.
Bienvenid@s a un nuevo reto de programación de la comunidad malandriner.
Propondremos 3 retos en 3 semanas y remataremos con una sesión en directo prime para celebrar una nueva fiesta del código.
Nick | Backend | Plato | Reto 1 | Reto 2 | Reto 3 | Directo | Total |
---|---|---|---|---|---|---|---|
Karlos | Xata | Yaguarlocro | 20 | 20 | 40 | 20 | 100 |
José Ángel | Cloudflare D1 | 20 | 20 | ||||
José Manuel | CockroachDB | Hígado de baby | 20 | 20 | 40 | 20 | 100 |
Juan Andrés | Planetscale | Fingers de alicatador | 10 | 20 | 40 | 20 | 90 |
Sergi | Texto | Yo soy negan | 20 | 20 | 60 | 20 | 120 |
Imanol | Planetscale | Fingers de merluza | 20 | 20 | 60 | 20 | 120 |
Yuri | SurrealDB | 20 | 20 | ||||
Alfredo | EdgeDB | ||||||
David | Pocketbase | Backend de la muerte | 20 | 20 | |||
SergioPb | Xata | Carpacho de cerebelo | |||||
Andrés | FaunaDB | ||||||
Borja | Texto | Carpaccio de materia blanca | 20 | 10 | 20 | 40 | 90 |
Cesar Octavio | KeyDB | 20 | 20 | 40 | 20 | 100 | |
Ramón | Pocketbase | ||||||
Oliver | Cloudflare D1 |
Has abierto una Cocina para Zombies.
Los zombies están hartos de comer cerebros. No han ampliado su dieta desde hace siglos y las redes sociales les han empujado a querer tener una vida más moderna.
Quieren salir por ahí, tener vida social, divertirse sin riesgos.
Y tienen dinero en el bolsillo, siempre que tengan carne en la pierna, claro.
Tu misión va a ser crear un buen sistema para que cuando pidan su menú no se enfaden. Claro, cuando se enfadan ya sabes, te comen el cerebro...
Se trata de trabajar con las herramientas que más te gusten y solo una impuesta: el backend.
🔴 No es necesario pagar por los backends. La parte gratuita debería ser suficiente para usarla en el desafío.
🔴 No es olbigatorio crear un frontend. Puede ser una API o cualquier otro sistema que te permita trabajar con el backend que no sea el el mismo backend.
🔴 Puedes utilizar el lenguaje o plataforma que quieras para conectarte a tu backend y crear la aplicación.
Hemos sorteado entre los participantes una lista de backends poco conocidas.
Se propondrán 3 retos, uno por semana.
Cada reto se podrá resolver con la tecnología que más te guste salvo la parte del Backend, como ya se ha explicado anteriormente.
En cada reto se ganan unos puntos si es superado.
Los puntos se acumulan en la clasificación y son "boletos" para el sorteo de premios que se celebrará el día de cierre del desafío.
Al ser esta una prueba donde cada uno puede realizar el ejercicio como quiera lo haremos de la siguiente forma.
Un Zombie ha entrado en la cocina y se ha merendado la terminal. La confundió con un cerebro, menudo trol tolai...
Así que los "troleados" tenéis que resolver el desafío con estas condiciones de emergencia:
Te ha tocado un backend en suerte y tienes que ponerlo a trabajar.
El primer reto es muy sencillo.
Tienes que crear una aplicación que se conecte con tu backend para registrar la comanda.
🔴 SOLO vamos a guardar un dato: la fecha y la hora en la que se ha registrado la comanda.
NADA MÁS. Ni platos ni mesas ni nada, ¡¡no te adelantes!!
Dos requisitos:
NADA MÁS.
En el segundo reto haremos más cosas con esto, no te aceleres, que los zombies (al menos los de este mundo) van muuuuy lentos ;)
Máximo de puntos en este reto: 20.
Habla con Dani ;)
El sistema está listo, ¡pongámoslo a trabajar!
Tu sistema de captura de comandas tiene que ampliarse y guardar comandas en un formato como este:
Order {
table: Number
createdAt: Date
dishes: [
{
name: String,
quantity: Number
}
]
}
Number
es enteroDate
en formato ISO-8601 UTC Zero (Ejemplo: 2023-03-15T13:03:42Z)createdAt
es el momento en el que entra la comanda en el sistemadishes
es una colección de platos, con nombre y cantidadesRequisitos
Imprescindible
Interfaz
Requisito memorable
Máximo de puntos en este reto: 20 (de momento, durante la próxima semana habrá sorpresa)
Hay una opción a ganar 20 puntos sin tocar una línea de código (consulta el grupo de Telegram para saber cómo)
Una cocina donde las comandas no se despachan ni es cocina ni es nada. Por muy zombie que sea.
Así que es el momento de añadir esa feature 🥳
Consideraremos una cola FIFO: First In, First Out
Para el orden las mismas condiciones vistas en el reto 2:
createdAt
Las comandas desaparecen de esa lista en orden y se les puede añadir un campo nuevo dispatchedAt
para almacenar el momento en el que desaparecen de la comanda.
Tu misión que crear un comando, ruta o lo que sea para que se produzca ese "despacho" de la comanda 1 por 1 y se almacene el cambio en tu #BackendDeLaSuerte.
¡¡¡Un zombie se ha colado en tu cocina!!!
Vamos a simular que un zombie se cuela en tu sistema de comandas y altera tus datos. Va a intentar modificar la fecha en la que la comanda ha sido creada en tu sistema.
Tendrás que crear un método usando tu backend que permita protegerse de estos bichos comecerebros...
¿Cómo lo haremos?
Como no me puedo colar en tu código, simularemos al zombie haciendo una llamada a una API.
Cada vez que hayas creado una comanda tendrás que llamar a este endpoint:
https://zombie-entrando-cocina.vercel.app/api/zombie/1
Hay dos respuestas posibles:
1- El zombie pasa de largo
2- El zombie te escupe en la cara
En este segundo caso verás un mensaje que contiene una fecha aleatoria de Marzo de 2023. Tendrás que capturarla y asigánrsela a la comanda en el campo createdAt
. Al Zombie solo le llega el cerebro para cambiarte el día, no la hora.
El Zombie Trol "ataca" justo después de que almacenes la comanda.
El reto para ti de esta prueba es lograr recuperar la fecha createdAt
original si ha sido alterada por el Zombie Trol.
Máximo de puntos en este reto: 60