Trabajo práctico TACS 2015 - 1er Cuatrimestre

El objetivo del TP es desarrollar una aplicación social interactiva que permita a los usuarios y sus amigos crear “viajes” los cuales podrán ser consultados y recomendados a otros amigos.

La forma de acceso a la misma será mediante una aplicación de facebook a la cual los usuarios deberán otorgar permisos.

El TP constará de 5 entregas en las cuales de forma iterativa e incremental se irán agregando funcionalidades a la aplicación.

Restricciones y consideraciones:

  1. La aplicación debe funcionar en Google App Engine.
  2. El login de usuario debe ser con Facebook a través de OAuth.
  3. Todos los items creados deberán referenciar a un itinerario obtenido utilizando la API de Despegar.com. Para esto será entregada una API-key a cada grupo.
  4. Los viajes creados deberán estar acompañados por un mapa de googlemaps.
  5. Todas las llamadas al servidor deben ser asincrónicas.
  6. Si bien se espera algo sencillo. La aplicación debe tener un frontend amigable a los usuarios.
  7. Se debe utilizar maven para gestionar el life-cycle de la aplicación.
  8. Se debe utilizar GIT como SCM.
  9. El nivel de cobertura de tests debe ser superior al 70%.
  10. Es tan importante el hecho de que la aplicación funcione como se espera como aplicar un buen diseño para la construcción de la misma.
  11. Todos los métodos no triviales deben tener su correspondiente javadoc explicando su función, forma de uso y cualquier otra información relevante.
  12. Cualquier decisión respecto del código o las soluciones utilizadas debe estar documentada, así como un howto.txt para levantar la aplicación incluído en el repositorio.
  13. Las entregas deberán realizarse el día pactado para la misma antes de las 19 Hs. con un tag llamado Entrega_XX correspondiente al número de entrega.
  14. Las entregas se realizarán indicando el link al repositorio GIT y el tag designado para la entrega.
  15. La aplicación debe ser capaz de correrse utilizando el comando mvn jetty:run o similar, a definir por el equipo y especificar en el documento howto.txt.
  16. Todo retraso en una entrega que no haya sido correctamente comunicado y justificado tendrá como penalización el agregado de nuevos requisitos para la aprobación final del TP.

User Stories:

  1. Como usuario quiero poder registrarme con mi cuenta de Facebook.
  2. Como usuario quiero poder crear un viaje. El mismo se creará buscando por origen, destino y fechas en la API pública de Despegar.com. y permitiéndome elegir una opción concreta (AKA itinerario) de la respuesta brindada.

NOTA 1: A fines de simplificar el TP, los viajes serán siempre para 1 adulto ida y vuelta.

NOTA 2: Queda a decisión y criterio del grupo la forma de diseñar este caso de uso, teniendo en cuenta la usabilidad del mismo.

  1. Como usuario quiero poder ver mis viajes publicados con su información correspondiente. El usuario debe poder ver:
  1. Origen y destino de cada segmento:
  1. Aerolínea
  2. Número de vuelo
  3. Fecha y horario de salida (En el GMT del origen)
  4. Duración del vuelo
  1. Precio total del viaje
  2. Un mapa de Google Maps indicando los segmentos a viajar.

NOTA: La información debe ser la obtenida al momento de la creación de viaje. Por lo cual la misma deberá ser persistida en ese momento.

  1. Como usuario quiero ver los viajes publicados por mis amigos de Facebook.
  2. Como usuario quiero recomendar a un amigo un viaje para que lo agregue como suyo.
  3. Como usuario quiero ver los viajes que me recomendaron y poder aceptarlos o rechazarlos.
  4. Como usuario quiero que al crear un viaje, el mismo se publique en mi muro de Facebook.
  5. Como usuario quiero recibir una notificación de Facebook cuando alguien me recomiende un viaje.
  6. Como usuario quiero recibir una notificación de Facebook cuando alguien acepte un viaje que yo le recomendé.
  7. Como usuario quiero compartir la creación de un viaje en mi muro de Facebook.

Entregas:

Entrega 1 - Basis

Esqueleto de la aplicación WEB (2 semanas).

Se debe definir un primer approach hacia los recursos y URLs REST que se utilizarán para cumplir con las historias propuestas. Para esta entrega no es necesario que las historias funcionen sino que los recursos devuelvan respuestas ficticias estáticas.

Entrega 2 - App volátil

Funcionalidad principal sin diferenciar usuarios y persistiendo en memoria (3 semanas).

Se debe definir el comportamiento de los principales servicios relacionados al dominio (no sociales) y cumplir con la funcionalidad persistiendo en memoria. La integración principal con la API de Despegar y Google maps debe estar disponible en esta entrega

Entrega 3 - Social

Integración principal con Facebook. (2 semanas).

Se debe realizar la primera integración con facebook. Login e interacción con amigos.

Entrega 4 - GAE

Persistencia utilizado Google App Engine (3 semanas)

Se debe modificar la aplicación para que en vez de almacenar los datos en memoria, la misma lo haga utilizando Google App Engine.

Entrega 5 - Final

Entrega final del TP. Cerrar historias que no hayan sido atacadas + bonus (2 semanas).

Se deben implementar todas las historias propuestas en el backlog. A su vez se coordinará con el ayudante la inclusión de una o más historias extra.


.

Recursos:

Api pública de Despegar: https://api.despegar.com/v3/

Recursos para desarrolladores de Google Maps: https://developers.google.com/maps/

Servicio geográfico de aeropuertos: http://www.webservicex.com/airport.asmx