La siguiente es una prueba para evaluar a aspectos técnicos de los candidatos a desarrollador Backend.
Made with ❤️ by people who loves ⚽
Este repositorio contiene una serie de requerimientos de un Caso Práctico, que busca evaluar las capacidades técnicas del candidato con respecto a las principales funciones y responsabilidades que se requieren dentro del área de Desarrollo de Tecnología de Footters.
Principalmente los siguientes aspectos:
- Creatividad para resolver los requerimientos.
- Calidad del código entregado (estructura y buenas prácticas).
- Eficiencia de la solución entregada.
- Familiaridad con librerías, frameworks y plataformas de desarrollo.
- No hay tiempo establecido para entregar la prueba. Aun así, recomendamos emplear un máximo de 3-4 días y enviar todo lo que puedas.
- Se requiere de una cuenta de GitHub para realizar este ejercicio.
- Antes de comenzar a programar:
- Realizar un
Fork
de este repositorio (https://github.com/Footters/backend-test). - Clonar el fork a su máquina local
git clone git@github.com:USERNAME/FORKED-PROJECT.git
- Crear un
branch
en su cuenta de GitHub utilizando su nombre completo.
- Realizar un
- Se recomienda añadir un
archivo.md
en la solución aportada para explicar mediante texto lo que se considere oportuno. - Al finalizar, existen 2 opciones para entregar su proyecto:
-
- Realizar un
Commit
de su proyecto, enviar unPull Request
al branch con su nombre, y notificar a la siguiente dirección de correo electrónico dlcarrascal@footters.com.
- Realizar un
-
- Crear un archivo comprimido (.zip o .rar) de su proyecto y enviar a la siguiente dirección de correo electrónico dlcarrascal@footters.com.
-
Se solicita la creación de una API REST que gestione las alineaciones de los partidos de fútbol, los jugadores alineados en ellas y las acciones que generan estos jugadores durante un partido.
- Las alineaciones adoptan una formación (e.g. 4-4-2) de entre varias (4-4-2, 4-3-3, 3-4-3). No es necesario incluir ninguna más.
- Una alineación es del equipo local o visitante. No es necesario gestionar datos de equipos.
- Los jugadores tienen un nickname (nombre de la camiseta), un dorsal y una posición (por defecto).
- Se alinean un máximo de 11 jugadores en un partido.
- Se asume que un jugador adopta su posición en cualquier alineación.
- Omitimos restricciones de posiciones en una alineación según su formación. (Puede haber 11 porteros 😆)
- Las acciones son de un tipo (tarjeta amarilla o roja, gol/gol en propia puerta, asistencia). No es necesario incluir ninguna más.
- Las acciones ocurren en un minuto concreto del partido.
- Las acciones van asociadas a un jugador alineado.
- Omitimos la gestión de cambios de jugadores en la alineación.
- Poder crear, editar y eliminar una alineación.
- Poder crear, editar y eliminar un jugador.
- Añadir o eliminar un jugador a una alineación.
- Poder crear o eliminar una acción.
- Obtener una alineación, con la posibilidad de añadir los jugadores alineados y las acciones que se han producido.
- Listar los jugadores. Incluir filtro por posición. Paginación requerida.
- Listar el total de acciones por tipo. Incluir filtro por alineación o jugador.
- Requerido usar Docker y Docker Compose para crear los diferentes servicios.
- Se puede usar el lenguaje que se desee, aunque valoramos preferiblemente NodeJS o Go.
- Se puede usar cualquier motor base de datos, aunque valoramos preferiblemente cualquier SQL.
- Se puede hacer uso de ORM o QueryBuilder.
- Se puede hacer uso de frameworks y librerías de terceros.
- Requerido implementar un sistema de caching. Se valorará preferiblemente Redis. En caso de no abordar la solución por desconocimiento o tiempo, describir en el
archivo.md
cómo implementariais la solución, cuál sería la política de invalidación y qué tiempos de expiración otorgarías según el tipo de dato y el uso que creeis que puede tener. - Requerido implementar tests.
- Se valorará un correcto control de errores.
- Total libertad para añadir cualquier funcionalidad extra que considereis interesante, ya sea para extender o mejorar la descrita. Siempre bienvenida.