Modificado
Licencia
CC0 1.0
Estado del documento
Version 1.0

DeDe

Introducción

Una empresa de venta de productos quiere crear un sistema de venta online denominado DeDe (Decentralized Delivery) que respete la privacidad de los clientes siguiendo los principios SOLID.

Para ello, el sistema no almacenará información personal de los clientes, sino que obtendrá dicha información de los pods de los usuarios siempre que los usuarios den los permisos necesarios al sistema de venta.

Requisitos de alto nivel

  • El sistema emulará un sistema de compra online donde los usuarios finales podrán seleccionar y encargar productos a comprar
  • Una vez que el usuario seleccione los productos a comprar, el sistema calculará los costes de envío consultando la dirección deseada del usuario en su pod y calculando los costes de acuerdo a la distancia del centro de distribución a dicha dirección.
  • El sistema mostrará los costes finales de los productos a comprar y una vez que el usuario decida comprarlos, registrará el evento que simulará que la venta ya ha sido realizada y se procederá al envío correspondiente.
  • El sistema permitirá a los usuarios visualizar los pedidos realizados
  • La aplicación será implementada utilizando el framework React y Typescript.
  • La aplicación debería ser accesible y estar desplegada utilizando un sistema de integración continua. Cada equipo podrá decidir la tecnología de despliegue así como el servicio de hosting a utilizar.

Características opcionales

  • Permitir a un usuario tener más de una dirección de envío en sus pods (por ejemplo, trabajo, gimnasio, Universidad, etc.)
  • Incluir una estimación del tiempo en que la persona estará en un lugar (por ejemplo, Lunes-Jueves, trabajo de 9h a 18h) y restringir algunas de las direcciones de ser usadas en la entrega fuera de esos horarios.
  • Añadir estaciones de recogida que algunos portadores utilizarán. La estación de recogida podrá ser calculada de forma dinámica basándose en la dirección de la persona o incluso una posición que pille de camino al receptor (por ejemplo, entre la casa y el trabajo).
  • Con el fin de calcular los costes de envío se podrán utilizar APIs externas de diferentes portadores, para que los usuarios puedan elegir con cuál de los portadores desean realizar el pedido.
  • Permitir que algunos usuarios con roles de administrador puedan ver estadísticas de productos solicitados y monitorizar el estado de los pedidos.
  • Implementar tanto una aplicación web como una aplicación en teléfono móvil.
  • Implementar un emulador del sistema de envío que pueda notificar a los usuarios cuando los productos hayan llegado y hacer un seguimiento del proceso de envío.
  • Soportar diferentes tipos de actores como clientes, gestores, administradores, etc. que puedan realizar diferentes acciones como gestión de inventario, cambios de precios, catalogación de ítems, etc.
  • Añadir la posibilidad de que existan varios centros de distribución o almacenes en los que estén almacenados los productos.
  • Añadir la posibilidad de que los usuarios puedan añadir o actualizar la información de sus direcciones en sus pods directamente mediante la aplicación.
  • Añadir puntuaciones y revisiones a los productos o los centros de distribución para que los usuarios puedan dar realimentación sobre su experiencia.
  • Los equipos podrán decidir utilizar más de una tecnología de despliegue si lo desean.

Criterios de valoración

Los siguientes criterios serán tenidos en cuenta a la hora de evaluar la solución:

  • Estética y facilidad de uso por personas no técnicas
  • Seguridad y respeto a la privacidad de los usuarios
  • Capacidad de respuesta de la aplicación
  • Originalidad de la solución.
  • Calidad de la documentación técnica teniendo en cuenta los registros de decisiones arquitectónicas.
  • Calidad del código analizado tanto de forma manual como automática.
  • Cobertura de código y calidad de la estrategia de pruebas.
  • Aspectos de gestión de proyectos como el uso adecuado de issues, actas, revisiones de código, registros de decisiones arquitectónicas, etc.
  • Sistema de Integración continua (CI) y Entrega Continua (CD).

Concurso Solid

Los equipos podrán participar voluntariamente en el concurso SOLID que se organiza en colaboración con Inrupt y Empathy. Se publicará más información sobre cómo participar más adelante.