Bookbnb

Indice

  1. Descripción
  2. Requisitos
    1. Epicas
      1. Usuarios
      2. Perfil
      3. Busquedas
      4. Recomendaciones
      5. Reservas
      6. Consultas
      7. Calificaciones
      8. Mis reservas
      9. Publicaciones
      10. Notificaciones
      11. Administración de usuarios
      12. Administración de publicaciones
      13. Administración de servidores
      14. Métricas
      15. Bonus
    2. Historias de Usuario
  3. Requisitos No Funcionales
    1. Componentes
    2. Tecnologias
    3. Log
    4. Monitoreo
    5. Empaquetamiento
    6. Testing
    7. CI-CD
    8. Despliegue en la Nube
    9. UX
    10. Documentación
  4. Instancias de entrega

Descripción

Una importante empresa ha decidido encargarnos el desarrollo de una plataforma digital llamada Bookbnb dedicada a la oferta de alojamientos a particulares mediante la cual los anfitriones pueden publicitar y contratar el arriendo de sus propiedades con sus huéspedes.


Requisitos

A continuación se describirán una serie de Épicas e Historias de usuario indicando la funcionalidad a cumplir por la plataforma. Dentro de estos requisitos se encuentran definidos un conjunto de requisitos “bonus” los cuales deberán ser analizados junto con el ayudante para definir su alcance y prioridad.

En caso de que se observe alguna definición ambigua o la falta de la misma, esta debe ser aclarada y definida por el grupo junto a su corrector

Epicas


Usuarios

Como usuario quiero poder registrarme y tener una cuenta para poder acceder a los servicios de la plataforma.

Historias de usuario relacionadas:

Perfil

Como usuario quiero poder editar mi perfil y acceder tanto a mi perfil como al de otros usuarios para conocer y que me conozcan otros usuarios.

Historias de usuario relacionadas:

Búsquedas

Como huesped quiero poder realizar búsquedas de alojamientos con distintos filtros para visualizar las publicaciones que me interesen

Historias de usuario relacionadas:

Recomendaciones

Como huesped quiero poder recibir recomendaciones de alojamientos para encontrar de manera más simple las publicaciones que me resulten interesantes.

Historias de usuario relacionadas:

Reservas

Como huesped quiero poder acceder a una publicación para realizar reserva de un alojamiento

Historias de usuario relacionadas:

Consultas

Como huesped quiero poder realizar consultas sobre una publicación para esclarecer dudas.

Historias de usuario relacionadas:

Calificación de alojamiento

Como huesped o anfitrion quiero poder calificar una experiencia de alojamiento que realice para informar mi opinion.

Historias de usuario relacionadas:

Mis reservas

Como huesped quiero poder listar mis reservas realizadas y por realizar para visualizar mi historial en la plataforma.

Historias de usuario relacionadas:

Publicaciones

Como anfitrion quiero poder dar de alta, editar y visualizar una publicacion para que realicen reservas de mi alojamiento.

Historias de usuario relacionadas:

Notificaciones

Como usuario quiero recibir notificaciones al dispositivo que utilizo para informarme sobre actividades en la plataforma

Historias de usuario relacionadas:

Administración de usuarios

Como administrador del sistema quiero poder gestionar los usuarios que estan registrados en el mismo para administrar su uso

Historias de usuario relacionadas:

Administración de publicaciones

Como administrador del sistema quiero poder gestionar las publicaciones que se encuentran en el mismo para administrar su uso

Historias de usuario relacionadas:

Administración de servidores

Como administrador del sistema quiero poder gestionar los servidores que se encuentran en el mismo para administrar su uso

Historias de usuario relacionadas:

Métricas

Como administrador del sistema quiero poder visualizar métricas e información de la plataforma para administrar evaluar el estado del negocio

Historias de usuario relacionadas:

Bonus

Las funcionalidades y requerimientos extras, estan siendo definidas por el cliente, pero en una primer captura de requisitos surgio lo siguiente

Historias de usuario relacionadas:


Historias de Usuario


Registro de usuarios

Descripción

  • Como usuario no registrado quiero registrame en la plataforma para acceder a las funcionalidades del sistema. El usuario podrá determinar que tipo de perfil utilizará en la cuenta al momento de registrarse:

  • Huesped: Es el usuario que realiza la búsqueda y reserva de alojamientos.
  • Anfitrion: Es el usuario que realiza las publicaciones de alojamientos.

En el resto de los CA se utilizará la nomenclatura Usuario como un usuario registrado

Criterios de aceptación

  • CA 1: Registro exitoso
    • Cuando el registro del usuario es correcto.
    • Entonces el sistema creará un nuevo usuario con su perfil y billetera correspondiente. Luego permitirá el ingreso al sistema.
  • CA 2: Falta uno o más campos obligatorios
    • Cuando el registro del usuario es no correcto debido a un ingreso erroneo o faltante de campos.
    • Entonces el sistema indicará los campos faltantes y/o erroneos y no permitirá el ingreso al sistema
  • CA 3: Registro fallido
    • Cuando el registro del usuario falla debido a un error del servicio.
    • Entonces el sistema indicará un mensaje de error acorde al usuario.

Login de usuarios con usuario y contraseña

Descripción

  • Como Usuario quiero ingresar a mi cuenta en la plataforma utilizando usuario y contraseña para acceder a las funcionalidades del sistema

Criterios de aceptación

  • CA 1: Login exitoso con correo electrónico y contraseña
    • Cuando el login del usuario utilizando correo electrónico y contraseña es correcto
    • Entonces el sistema permitirá el ingreso al sistema
    • En caso contrario se deberá mostrar un mensaje de error acorde al usuario.
  • CA 2: Login fallido
    • Cuando el login del usuario falla debido a un error del servicio.
    • Entonces el sistema indicará un mensaje de error acorde al usuario.
  • CA 3: Sesión expirada
    • Cuando la sesión del usuario excede el tiempo de expiración
    • Entonces el sistema solicitará al usuario nuevamente el login

Login de usuarios con proveedores de identidad federada

Descripción

  • Como Usuario quiero ingresar con mi cuenta en la plataforma con proveedores de identidad federada para acceder a las funcionalidades del sistema

Criterios de aceptación

  • CA 1: Login exitoso con proveedores de identidad federada
    • Cuando el login del usuario utilizando proveedores de identidad federada es correcto
    • Entonces el sistema permitirá el ingreso al sistema
    • En caso contrario se deberá mostrar un mensaje de error acorde al usuario.
  • CA 2: Login fallido
    • Cuando el login del usuario falla debido a un error del servicio.
    • Entonces el sistema indicará un mensaje de error acorde al usuario.
  • CA 3: Sesión expirada
    • Cuando la sesión del usuario excede el tiempo de expiración
    • Entonces el sistema solicitará al usuario nuevamente el login

Registro de administradores

Descripción

  • Como administrador quiero poder dar de alta a otros administradores en la plataforma para acceder a las funcionalidades del sistema. Criterios de aceptación

  • CA 1: Registro exitoso
    • Cuando el registro del administrador es correcto.
    • Entonces el sistema registrará un nuevo administrador con sus respectivas credenciales y permitirá el ingreso al sistema.
  • CA 2: Falta uno o más campos obligatorios
    • Cuando el registro del administrador es no correcto debido a un ingreso erroneo o faltante de campos.
    • Entonces el sistema indicará los campos faltantes y/o erroneos y no permitirá el ingreso al sistema
  • CA 3: Registro fallido
    • Cuando el registro del administrador falla debido a un error del servicio.
    • Entonces el sistema indicará un mensaje de error acorde al usuario.

Login de administradores

Descripción

  • Como Administrador quiero ingresar con mi cuenta en la plataformapara acceder a las funcionalidades del sistema

Criterios de aceptación

  • CA 1: Login exitoso
    • Cuando el login del adminstrador utilizando sus credenciales es correcto
    • Entonces el sistema permitirá el ingreso al sistema
    • En caso contrario se deberá mostrar un mensaje de error acorde al usuario.
  • CA 2: Login fallido
    • Cuando el login del usuario falla debido a un error del servicio.
    • Entonces el sistema indicará un mensaje de error acorde al usuario.
  • CA 3: Sesión expirada
    • Cuando la sesión del usuario excede el tiempo de expiración
    • Entonces el sistema solicitará al usuario nuevamente el login

Recupero de contraseña

Descripción

  • Como Usuario quiero poder recuperar mi contraseña en caso de que no la recuerde

Criterios de aceptación

  • CA 1: Recupero de contraseña éxitoso
    • Cuando se realice un recupero de contraseña
    • Entonces se deberá enviar un email con un link de recupero de contraseña, el cual tiene solo un uso y un tiempo de expiración

Edición de perfil

Descripción

  • Como Usuario quiero poder editar los datos de mi perfil de usuario para mantener actualizada mi información personal.

Criterios de aceptación

  • CA 1: Edicíón de datos de perfil exitosa
    • Cuando se modifican los datos de la cuenta del Usuario de manera exitosa
    • Entonces estos nuevos datos serán los que se utilicen como datos de perfil de usuario
    • En caso contrario se deberá mostrar un mensaje de error acorde al usuario.

Visualización de perfil propio

Descripción

  • Como Usuario quiero poder visualizar los datos de mi perfil de usuario para revisar mi información

Criterios de aceptación

  • CA 1: Visualización de perfil propio
    • Cuando se visualice el perfil del usuario propietario de la cuenta.
    • Entonces estos se visualizarán datos públicos y privados del usuario.
    • En caso contrario se deberá mostrar un mensaje de error acorde al usuario.

Visualización de perfil de otros usuarios

Descripción

  • Como Usuario quiero poder visualizar los datos de los otros usuarios para conocer su información de contacto

Criterios de aceptación

  • CA 1: Visualización de perfil de otros usuarios
    • Cuando se visualice el perfil de un usuario que no es propietario de la cuenta
    • Entonces estos se visualizarán datos públicos del usuario

Búsqueda de alojamiento geograficamente

Descripción

  • Como huesped quiero poder realizar búsquedas de alojamientos geograficamente para visualizar las publicaciones y así concretar una reserva

Criterios de aceptación

  • CA 1: Filtrado por geolocalización
    • Cuando se realiza una búsqueda utilizando un filtrado por distancia en base a mi localización
    • Entonces se deberán retornar las publicaciones que se encuentren a la distancia indicada.
  • CA 2: Filtrado por ubicacion
    • Cuando se realiza una búsqueda utilizando un filtrado por ubicacion en base a coordenadas. (Siendo estas coordenadas cualquier ciudad/pais junto con un radio determinado)
    • Entonces se deberán retornar las publicaciones que se encuentren en dicha area

Búsqueda de alojamiento por caracteristicas

Descripción

  • Como huesped quiero poder realizar búsquedas de alojamientos por sus caracteristica para visualizar las publicaciones y así concretar una reserva

Criterios de aceptación

  • CA 1: Filtrado por tipo de alojamiento
    • Cuando se realiza una búsqueda utilizando un filtrado por caracteristicas del alojamiento
    • Entonces se deberán retornar las publicaciones que cumplan dichos filtros
  • CA 2: Filtrado por cantidad de huespedes
    • Cuando se realiza una búsqueda utilizando un filtrado por cantidad de huespedes del alojamiento
    • Entonces se deberán retornar las publicaciones que cumplan dichos filtros

Búsqueda de alojamiento por fechas

Descripción

  • Como huesped quiero poder realizar búsquedas de alojamientos por fechas de checkin y checkout para visualizar las publicaciones y así concretar una reserva

Criterios de aceptación

  • CA 1: Filtrado por fecha de checkin
    • Cuando se realiza una búsqueda utilizando como filtro la fecha de checkin
    • Entonces se deberán retornar las publicaciones que cumplan se encuentren disponibles a partir de esa fecha
  • CA 2: Filtrado por fecha de checkout
    • Cuando se realiza una búsqueda utilizando como filtro la fecha de checkout
    • Entonces se deberán retornar las publicaciones que cumplan se encuentren disponibles hasta esa fecha ___

Búsqueda de alojamiento por precio

Descripción

  • Como huesped quiero poder realizar búsquedas de alojamientos por precio para visualizar las publicaciones y así concretar una reserva

Criterios de aceptación

  • CA 1: Filtrado por rango de precio
    • Cuando se realiza una búsqueda utilizando como filtro un rango de precios
    • Entonces se deberán retornar las publicaciones que cumplan se encuentren dentro de tal rango
  • CA 2: Filtrado por precio minimo
    • Cuando se realiza una búsqueda utilizando como filtro un precio mínimo
    • Entonces se deberán retornar las publicaciones que cumplan se encuentren por encima de ese precio
  • CA 3: Filtrado por precio maximo
    • Cuando se realiza una búsqueda utilizando como filtro un precio máximo
    • Entonces se deberán retornar las publicaciones que cumplan se encuentren por debajo de ese precio

Recomendaciones de alojamientos

Descripción

  • Como huesped quiero recibir recomendaciones afines a mi perfil para poder encontrar con mayor facilidad una reserva de alojamiento

Criterios de aceptación

  • CA 1: Recomendaciones por perfil de usuario
    • Los criterios de aceptacin de esta historia, deberán ser definidos junto con el corrector.

Visualización de publicación

Descripción

  • Como huesped quiero poder visualizar una publicacion de un alojamiento para ver sus fotos y/o videos y revisar sus características.

Criterios de aceptación

  • CA 1: Visualización exitosa
    • Cuando ingreso a una publicación como huesped
    • Entonces puedo visualizar su contenido multimedia, su descripción, sus caracteristicas, fecha de disponibilidad y precio por noche.

Reserva de alojamiento

Descripción

  • Como huesped quiero poder reservar un alojamiento para poder alojarme en el mismo

Criterios de aceptación

  • CA 1: Reserva exitosa
    • Cuando se realiza una reserva de manera exitosa
    • Entonces se deberá ejecutar el flujo correspondiente para establecer dicha reserva

Pago de reserva

Descripción

  • Como huesped quiero poder pagar la reserva un alojamiento para poder finalizar la reserva

Criterios de aceptación

  • CA 1: Pago exitoso
    • Cuando se realiza un pago de manera exitosa
    • Entonces se deberá ejecutar el flujo correspondiente para aplicar dicho pago y se deberá ver reflejado en mi billetera el descuento del monto del pago utilizando el smart contract que se definio
  • CA 2: Pago con error
    • Cuando sucede un error en el cobro del pago
    • Entonces no se deberá descontar de la billetara el monto de la reserva.

Consultas públicas

  • Como huesped quiero poder realizar comentarios con consultas en una publicación para poder consultarle al anfitrion mis dudas

Criterios de aceptación

  • CA 1: Consulta en publicación
    • Cuando se realiza una consulta pública en una publicación
    • Entonces todo aquel que entre a la publicación podrá leerla y el anfitrion puede o no responderla

Consultas privadas

  • Como huesped quiero poder realizar con consultas privadas a un anfitrion para poder consultarle mis dudas

Criterios de aceptación

  • CA 1: Mensaje directo
    • Cuando se realiza una consulta mediante el mensaje directo
    • Entonces solo los involucrados podran leer la misma y se deberá mantener una conversación en tiempo real por mensajes

Calificación cuantitativa del alojamiento

Descripción

  • Como huesped quiero poder realizar una calificación cuantitativa del alojamiento para así poder brindar mi opinión del mismo

Criterios de aceptación

  • CA 1: Calificación del alojamiento
    • Cuando un huesped realiza una calificación cuantitativa de un alojamiento en el cual se hospedo
    • Entonces esta calificación afectará la calificación del alojamiento

Calificación cualitativa del alojamiento

Descripción

  • Como huesped quiero poder realizar una opinion mas detallada del alojamiento para así poder brindar mi opinión del mismo

Criterios de aceptación

  • CA 1: Calificación
    • Cuando un huesped realiza una calificación con comentarios de un alojamiento en el cual se hospedo
    • Entonces esta calificación luego podrá ser visualizada por otros huspedes.

Calificación cuantitativa de huesped

Descripción

  • Como anfitrion quiero poder realizar una calificación cuantitativa del huesped que reservo mi alojamiento para así poder brindar mi opinin del mismo

Criterios de aceptación

  • CA 1: Calificación de un huesped
    • Cuando un anfitrion realiza una calificación cuantitativa de un huesped al cual le reservo un alojamiento
    • Entonces esta calificación realizada afectará la calificación del huesped

Calificación cualitativa de huesped

Descripción

  • Como anfitrion quiero poder realizar una opinion mas detallada del huesped para así poder brindar mi opinin del mismo

Criterios de aceptación

  • CA 1: Calificación
    • Cuando un anfitrion realiza una calificación con comentarios de un huesped al cual le reservo
    • Entonces esta calificación luego podrá ser visualizada en el perfil del huesped por otros anfitriones.

Historico de reservas

Descripción

  • Como huesped quiero poder visualizar todas las reservas de alojamientos que realicé para así poder controlar mi historial

Criterios de aceptación

  • CA 1: Listado de reservas
    • Cuando un huesped quiera visualizar sus reservas realizadas
    • Entonces se listarán todas las reservas que el huesped realizo, pudiendo filtrar las mismas

Reservas favoritas

Descripción

  • Como huesped quiero poder seleccionar publicaciones de alojamientos como favoritas para luego poder revisarlas con mas detalle o compartirlas

Criterios de aceptación

  • CA 1: Listado de reservas
    • Cuando un huesped quiera visualizar sus reservas favoritas
    • Entonces se listarán todas las reservas que el huesped seleccciono como favoritas, pudiendo filtrar las mismas

Alta de publicación

Descripción

  • Como anfitrion quiero poder dar de alta una publicacion de mi alojamiento para que realicen reservas del mismo y poder cobrar su uso

Criterios de aceptación

  • CA 1: Alta exitosa
    • Cuando un anfitrion de realice una nueva publicación de un alojamiento.
    • Entonces esta publicación podrá ser visualizada y reservada por los huespedes.

Edición de publicación

Descripción

  • Como anfitrion quiero poder modificar una publicacion ya realizada para actualizar su contenido

Criterios de aceptación

  • CA 1: A definir

Visualizacin de publicación

Descripción

  • Como anfitrion quiero poder visualizar una publicacion ya realizada para revisar su contenido

Criterios de aceptación

  • CA 1: A definir

Listado de publicaciones

Descripción

  • Como anfitrion quiero poder listar mis publicaciones realizadas para administrarlas

Criterios de aceptación

  • CA : A definir

Listar usuarios del sistema

Descripción

  • Como administrador del sistema quiero poder listar todos los usuario del sistema para gestionar su uso

Criterios de aceptación

  • CA : A definir

Visualizar perfil de usuario

Descripción

  • Como administrador del sistema quiero poder visualizar el perfil de un usuario del sistema para verificar sus datos

Criterios de aceptación

  • CA : A definir

Bloquear usuario

Descripción

  • Como administrador del sistema quiero poder bloquear y desbloquear un usuario del sistema para controlar su ingreso a la plataforma

Criterios de aceptación

  • CA 1: A definir

Listado de publicaciones

Descripción

  • Como administrador del sistema quiero poder listar todas las publicaciones de alojamientos que se encuentren en el sistema para acceder a ellas

Criterios de aceptación

  • CA : A definir

Visualización de publicaciones

Descripción

  • Como administrador del sistema quiero poder visualizar una publicación de un alojamiento para verificar su contenido.

Criterios de aceptación

  • CA : A definir

Bloqueo de publicación

Descripción

  • Como administrador del sistema quiero poder bloquear una publicación de un alojamiento que se encuentren en el sistema para que no puedan acceder a la misma

Criterios de aceptación

  • CA : A definir

Listar transacciones

Descripción

  • Como administrador del sistema quiero poder listar todas las transacciones de reservas y sus pagos para poder controlar su uso de la plataforma

Criterios de aceptación

  • CA : A definir

Carga de saldo

Descripción

  • Como administrador del sistema quiero poder cargar saldo en la billetear de un cliente para poder realizar campañas de beneficios o solucionar inconvenientes

Criterios de aceptación

  • CA : A definir

Listado de servidores

Descripción

  • Como administrador del sistema quiero poder listar todos los servidores que se encuentren dentro del sistema para controlar su uso

Criterios de aceptación

  • CA : A definir

Visualización de servidor

Descripción

  • Como administrador del sistema quiero visualizar la información de un servidor que se encuentre en el sistema para verificar que sea válida

Criterios de aceptación

  • CA : A definir

Alta de servidor

Descripción

  • Como administrador del sistema quiero poder dar de alta un nuevo servidor para que pueda acceder a los distintos servicios del sistema

Criterios de aceptación

  • CA 1: Alta de Api Key
    • Cuando se realice el alta de un nuevo servidor
    • Entonces se creara una nueva api key, la cual será utilizada por un servidor para poder acceder a los recursos y servicios de otros servidores dentro del sistema.

Bloqueo de servidor

Descripción

  • Como administrador del sistema quiero poder bloquear un nuevo servidor para que no pueda acceder a los distintos servicios del sistema

Criterios de aceptación

  • CA 1: Bloqueo de Api Key
    • Cuando se realice el bloqueo de un servidor
    • Entonces se tomará como inválida su api key, la cual será tomada como inválida para poder acceder a los recursos y servicios de otros servidores dentro del sistema.

Métricas de negocio

Descripción

  • Como administrador del sistema quiero poder visualizar distintas métricas del negocio para medir el uso de la plataforma y sus servicios

Criterios de aceptación

  • CA : A definir

Uso de reglas para configurar disponibilidad geografica

Descripción

  • Se requiere brindar un servicio, el cual pueda consumir de una API externa el estado de la pandemia en una región geográfica en particular. Esta información junto a otras reglas definidas por los administradores, deberán definir si las publicaciones que se encuentren en dicha región estan disponibles o no

Criterios de aceptación

  • CA 1: A definir

Cambios en el smart contract

Descripción

  • Se requiere realizar una serie de cambios en el smart contract que administra la gestión de pagos.

Criterios de aceptación

  • CA 1: A definir

Uso de kubernetes

Descripción

  • Se requiere realizar una migración de los servicios backend de la plataforma a kubernetes

Criterios de aceptación

  • CA 1: A definir

Requisitos No Funcionales

Componentes

La plataforma constará de los siguientes componentes:

Aplicación mobile

Una aplicación mobile, el cual será utilizado por los usuarios. Las tecnologias a utilizar son detalladas en la sección tecnologias

Backoffice web

Un backoffice web, el cual será utilizado por los administradores.

Las tecnologías a utilizar son detalladas en la sección tecnologias

Servicios backend

Distintos servicios de backend para brindar soporte a la plataforma. Como enfoque se recomienda orientar estos servicios hacia una arquitetura de microservices. Dicha arquitectura propuesta deberá ser convalidada junto al ayudante. Las tecnologías a utilizar son detalladas en la sección tecnologias

Smart contract

La gestión de pagos de las transacciones se realizará utilizando un smart contract, el cual será provisto por la cátedra


Tecnologias

Stack de tecnologías recomendadas para el desarrollo de los distintos componentes.

Aplicación mobile

Para el desarrollo de la App se podrá optar por:


Servicios backend

Para el desarrollo de los servicios backend se deberá utilizar como lenguajes de programación:

Junto con sus respectivos frameworks. La catedrá recomienda alguno de estos

Se recomiendan como base de datos alguna de las siguientes

Esta elección será responsabilidad del grupo y la misma deberá estar consensuada junto al ayudante. Ademas quedará justificada en la documentación técnica que formará parte del TP.


Backoffice web

Para el desarrollo del backoffice web se utilizará React como biblioteca.


Notificaciones push

Para el uso de notificaciones push se recomienda utilizar el servicio provisto por firebase Cloud Messaging


Contenido multimedia

Para el uso de contenido multimediase recomienda utilizar el servicio provisto por firebase Storage


Chat

Para el uso del chat en tiempo real se recomienda utilizar el servicio provisto por firebase Real time database


Log

Los servidores deben contar con un sistema de log en donde se registren los eventos que se generen durante la ejecución. El sistema de log debe permitir configurar el nivel de los eventos que desean registrar. Estos niveles son:

Nivel Condiciones
Error Condición de falla catastrófica, el sistema no puede funcionar. (criterio de las 2 a.m.) Condición que haga que la aplicación no pueda ejecutar una funcionalidad. Ejemplo: No es posible conectarse con la base de datos
Warn Cualquier condición anómala que afecte el funcionamiento del sistema, pero no impida la funcionalidad básica Ejemplos: Uso de APIs deprecadas, Mal uso de APIs
Info Cualquier acción correspondiente a un caso de uso iniciada por el usuario o el sistema. Información que permita trazar el historial de las entidades. Ejemplos: Conexión a la base de datos exitosa, Conexión de nuevo cliente
Debug Información de contexto que permita resolver un problema técnico. Debe ser útil incluso sin el código fuente Ejemplo: Datos de login para la DB

Estos logs deberán ser almacenados de tal manera que puedan ser accedidos en cualquier momento


Monitoreo

Para el monitoreo de los servicios se recomiendan alguna de las siguientes librerias/plataformas


Empaquetamiento

Cada uno de los desarrollos solicitados debe empaquetarse según el estandar de la plataforma, es decir:

  • Python: Python Setuptools (setup.py y requeriments.txt)
  • Node: Node Package Manager (npm, package.json), Yarn Package Manager(https://yarnpkg.com/lang/en/)
  • Android Client: Android Application Package (apk)

Además, los servidores deberán traer un Dockerfile que permita correrlos sin necesidad de tener instalado los respectivos lenguajes.


Testing

El desarrollo de la aplicación se deberá adaptar a los estándares de calidad utilizados por AppMaker©. Dentro de estos estándares se encuentran:

  • Pruebas unitarias
  • Métricas: code coverage debe ser mayor a 75%
  • Respetar estándar para estilo de codificación: Lint
  • Pruebas de integración.
  • Todas aquellas que se consideren convenientes para garantizar la calidad de las aplicaciones desarrolladas.

Nota: Esta sección hace solo referencía a los servicios de backend No se toma como requerimiento el realizar pruebas sobre el cliente Android, aunque es recomendado como una buena práctica.


CI-CD

Las pruebas y métricas anteriormente mencionadas deberan correr bajo una plataforma de integración continua.

Se sugiere el uso de TravisCI ó GitHub Actions, pero se podrá utilizar otro previa justificación.

El resultado del code coverage debe ser desplegado automáticamente a una plataforma que permita visualizarlas, entre muchas posibilidades se encuentran:

Finalmente, el despliegue al servidor de PAAS elegido deberá ser automático. Este deberá tener en cuenta como la actualización de la base de datos (cambios en las tablas, etc). El mecanismo utilizado para disparar dicho despliegue (utilizar el branch master como productivo, utilizar un tags con nombre especial) será definido por los desarrolladores y deberá ser detallado en la documentación


Despliegue en la Nube

Los servidores, se deberán disponibilizar en la nube utilizando una plataforma como servicio (PAAS).

Se recomienda usar Heroku ya que cuenta con todos los requerimientos tecnológicos pedidos anteriormente.


UX

Se deberá presentar evidencia de prototipado del diseño de pantallas, las cuales serán convalidadas junto al ayudante a cargo

Para el diseño de la interfaz deben respetarse las guías de diseño propuestas por Google con Material Design.


Documentación

Se deberá entregar la siguiente documentación:

  • Servicios Backend:
    • Documentación técnica:
    • Instalación y configuración
    • Definición de arquitectura
    • Especificación de API REST: OpenAPI
  • Guia de usuario de la aplicacion disponible en Github Pages
  • Guia de usuario del backoffice disponible en Github Pages
  • Bitácora de proyecto
  • Análisis postmortem

Se espera que dicha documentación se elabore de manera incremental y que cada entrega parcial tenga parte de la misma.


Instancias de entrega

Instancia Fecha Alcance
Checkpoint 1 22/10/2020 A definir
Checkpoint 2 19/11/2020 A definir
Checkpoint 3 17/12/2020 A definir
Checkpoint 4 Febrero 2021 A definir