jueves, 20 de junio de 2013

Patit mi proyecto fin de carrera

Patit - Un servicio web con un API REST junto con un servicio de subida de ficheros, una aplicación nativa en Android y una aplicación web

   Tras este nombre algo complejo para las personas ajenas al mundillo de la programación se esconde mi proyecto fin de carrera. Patit es para que se entienda un servicio de almacenamiento de archivos en la nube añadiendo funciones sociales y que cuenta con una aplicación Android y una aplicación web para acceder a dicho servicio.

   La aplicación se ideó para responder a la necesidad de un sistema de almacenamiento rápido de información. Puede venir a la cabeza rápidamente aplicaciones como Evernote o muchas otras, pero Patit, se centró más en mostrar los contenidos de forma simple y sobre todo permitir compartir los enlaces de la forma más sencilla posible.

   Escribo esta entrada porque hace varios meses que terminé mi proyecto fin de carrera y comencé a trabajar en una empresa de mi ciudad como programador de aplicaciones web ( o lo que haga falta ;) ) y aún no he tenido tiempo de mostrar mi proyecto a los amigos. Pues voy a aprovechar la ocasión para mostrar la aplicación en profundidad. 

patit promocional
   Esta aplicación surgió como la mayoría de las aplicaciones de una necesidad que me surgió un día mientras viajaba en autobús. De repente se me ocurrió que debería existir una forma de compartir elementos de mi móvil en conjunto. La limitación de los smartphones actuales es que las aplicaciones son monotemáticas. Puedes enviar una o varias imágenes, o una o varias canciones, pero no existe la posibilidad de enviar, almacenar o compartir contenido de diversas fuentes. La idea de Patit era un sistema que fuese capaz de almacenar el contenido multimedia de forma muy sencilla y que permitiese una categorización del mismo por elementos y no por tipo. Algo parecido a una carpeta en la nube, pero que sea fácil de usar desde un smartphone. Así surgió la idea de bolsillo como un conjunto de objetos muy diversos.

   Una vez comprendido qué es lo que se quería conseguir con la aplicación, se pensó en qué sería necesario para llevarla a cabo. Hacía falta un servicio web que llevase a cabo las funciones de gestión de la base de datos y que llevase el control de las peticiones al backend, también haría falta un sistema que permitiera subir ficheros al servidor web, además se necesitaba un framework web para realizar la aplicación web y una aplicación móvil para poder usar la aplicación desde cualquier dispositivo.
Las tecnologías que se barajaron fueron muchas, hay que entender que este ha sido mi primer proyecto web, pero al final se eligieron las siguientes:

    - Servicio online (Backend) y servicio de subida de ficheros : Django
    - API para el servicio online: Tastypie
    - Base de datos: PostgreSQL
    - Método de comunicación: Json
    - Aplicación web: Backbone + Underscore.js javascript (Bootstrap para los estilos)
    - Aplicación nativa Android: Java

El desarrollo me llevó seis meses y el resultado es lo que voy a explicar a continuación:

- Servicio web y servicio de subida de ficheros: Realizados con Django como framework web y Tastypie como librería para crear la API. Usar Django para subir los archivos no es ni de lejos una solución óptima, pero válida para un sistema que no estaba pensado para ser usado en un entorno de producción.

- Aplicación web realizada con Backbone: La aplicación web dispondría de la misma funcionalidad que la aplicación móvil, siendo eso sí más cómoda de usar. Se realizó usando responsive dessign de bootstrap y así poder adaptarse a diversos tamaños de pantalla. La idea es que los enlaces de los elementos se pudieran visualizar sin que hiciese falta ningún tipo de permisos en la aplicación web.


La galería con las imágenes de la aplicación las he colgado en un álbum de picassa en el siguiente enlace:






- Aplicación Android: La aplicación android se puede considerar la base del diseño de la aplicación. Se diseñó en primer lugar y se aprovecharon casi todas las características que brindan las pantallas táctiles para facilitar el manejo de aplicaciones. Posteriormente se hablará del diseño y de la funcionalidad.




La galería de capturas de pantalla de la aplicación puede verse en esta dirección:

El funcionamiento de la aplicación es muy sencillo. Un usuario puede crear varios bolsillos, y en cada bolsillo puede almacenar elementos multimedia como fotos, música, texto o direcciones web. Cada bolsillo puede ser clasificado según temáticas (deportes, libros, cocina, fotografía, etc) y tienen un nombre y una descripción. Por su parte los elementos que se pueden almacenar en un bolsillo se identifican con un nombre y una descripción. Los bolsillos tienen funciones sociales y pueden ser votados, y comentados. Puedes enlazar bolsillos de otras personas mediante un icono de favoritos, e incluso hay bolsillos esponsorizados para empresas que paguen por uno de estos bolsillos. La idea es que cada uno almacene y comparta en un bolsillo información, pero sobre todo que pueda acceder a ella fácilmente. Para ello cada elemento de un bolsillo dispone de una opción de descargar o de ir al enlace en caso de ser una página web. Por su parte si una empresa desea podría pagar por un bolsillo esponsorizado que dispone de una categoría especial dentro de la aplicación.

La aplicación muestra los bolsillos en 4 categorías y a cada categoría se le ha asignado un color. 

- Azul: Tus Bolsillos: Son los bolsillos que crea el usuario
- Rojo: Aleatorios: Bolsillos aleatorios de la plataforma.
- Amarillo: Destacados: Es una categoría con los bolsillos que han sido destacados
- Verde: Esponsorizados: Contiene los bolsillos de pago.

- gris: Buscador de bolsillos.

Y como todo proyecto se realizó una documentación extensa del proyecto...

La mejor forma de comprender la aplicación puede ser ver la presentación que se expuso:

Este es el proyecto que he tenido entre manos durante este tiempo, y del que he aprendido mucho. Es poco probable que este proyecto salga adelante pues requeriría de una reestructuración profunda y de medios bastante caros para lanzarlo al mercado. Aún así pronto colgaré el código por si a alguien le es de utilidad.

Espero que os haya gustado la aplicación y sobre todo que gracias a esto ya soy Ingeniero Informático :)

----------------------------------------------------------------------------------------------------------------------------------
Actualización 

Aquí dejo los enlaces para ver el código del backend y el código Android

No hay comentarios:

Publicar un comentario