
Durante el último API Hours del curso 2012-2013, Sergio Alcalde nos presentó Topoos. La propuesta nos resultó muy interesante para construir soluciones dependientes del contexto. Con el fin de evaluar Topoos decidimos realizar una pequeña prueba de tecnología.
Nuestras pruebas de tecnología son puramente exploratorias y acotadas a un tiempo de ejecución muy corto, lo justo para «jugar» un rato con una tecnología en un escenario concreto y hacernos una idea como funciona y qué se puede hacer con ella.
¿Plataforma, servicio, aplicación?
Cuando entramos en contacto con Topoos nos costó darle una definición. No era una aplicación ya que por si solo Topoos no da un servicio al usuario final. Podría verse como un conjunto de servicios de geolocalización, pero cuando desarrollamos sobre Topoos, además de dar de alta nuestra aplicación como cliente, tenemos que registrar nuestros usuarios. Si tenemos que poner una etiqueta a Topoos diremos que es una plataforma de geoservicios.
¿Por qué decimos que es una plataforma? Para empezar, desarrollas aplicaciones sobre Topoos, no utilizas Topoos desde tus aplicaciones. Puede que así expresado parezca una diferencia sutil, pero no deja de tener implicaciones importantes. Si desarrollas una aplicación sobre Topoos los usuarios deben de darse de alta en Topoos y después permitir el acceso de tu aplicación a sus datos. Es decir, en terminología OAuth, Topoos es el resource owner y tu aplicación es un cliente que actúa en nombre de un usuario de Topoos para acceder a los recursos de este usuario que residen en Topoos. Explicado con una analogía: tu aplicación es a Topoos, como TweetDeck o Hootsuite es a Twitter.
En definitiva tus usuarios van a saber que tu aplicación está desarrollada sobre Topoos porque el usuario deberá registrarse en Topoos.
Los ladrillos de Topoos
Una vez aclarado esto, pasamos a ver los principales endpoints y entidades que ofrece Topoos. El núcleo de Topoos se organiza alrededor de 4 entidades:
- Users: los usuarios (nada más que explicar aquí).
- Positions: posiciones geográficas de un usuario a lo largo del tiempo. Tienen vida propia o pueden estar vinculadas a un track.
- Tracks: una secuencia de posiciones con un principio y un final. A un track se le puede asociar reglas que actúan con disparadores de un evento cuando las condiciones de la regla se cumplen. Por ahora solo hay disponible una regla que se dispara cuando se sale de los límites de de un área circular predefinida, lo cuál limita las posibilidades.
- POIs: son puntos de interés categorizados en los que los usuarios pueden hacer checkin.
Existen otros endpoints que ofrecen funcionalidad extra pero nos hemos centrado en el core. Con estos mimbres hemos pensado en una aplicación muy simple pensada para el móvil y nos hemos centrado tan solo en resolver los problemas de integración con Topoos creando parte del backend que sería necesario para que esta aplicación fuera posible. Con esto en mente y con un número muy limitado de horas de trabajo definimos sobre el papel lo que tenía que ser nuestra aplicación: Parkplan.
Parkplan, o cómo controlar a tus «churumbeles» en espacios abiertos
En base a los ladrillos que ofrece Topoos y con pocas horas por delante, pensamos en una aplicación instalable en el teléfono de un padre y sus hijos. El padre tendría que ocuparse de instalar la aplicación tanto en en su teléfono como en el de sus hijos. Además, debería emparejar los teléfonos de sus hijos con el suyo a través de un proceso de autorización. De esta forma, el teléfono del padre podrá controlar la ubicación del teléfono de sus hijos, solo él y nadie más. Cuando papá quiera llevar a sus hijos al parque, les deja el balón y se sienta en un banco. Lo único que tiene que hacer para estar más tranquilo es abrir la aplicación de parkplan y activar una valla o zona de control sobre el mapa en la que considere que sus hijos están seguros y a la vista. Una vez activada la zona, los móviles de sus hijos enviarán una alerta al teléfono del padre cuando se salgan de la zona de control definida.
Casos de uso de Parkplan
A la izquierda vemos un diagrama de casos de uso donde se representan los dos tipos de usuario que va a tener la aplicación Parkplan. Por un lado tendremos usuarios contoladores: los padres; y por otro usuarios controlados: los hijos.
A continuación nos volcamos en los entresijos de cada caso de uso explicando técnicamente como interactuar con el API de Topoos.