Archivo de Etiquetas de 'flatee'

Continuamos trabajando

Ya hace mucho tiempo de nuestro último post, supongo que los que sigáis nuestros blogs ya conoceréis el estado actual del desarrollo de flatee, y para los que no los hayáis leído recomiendo visitar los enlaces para conocer los diferentes puntos de vista.

Pues eso, que esto es simplemente para decir que estamos vivos y que, aunque de otra forma a la original con el Linking Internship, seguimos trabajando con el compromiso de tener una beta privada hacia finales de año.

Implementando la gestión de usuarios

Sin lugar a dudas, Dani ya os puso sobre la pista de nuestra idea de la gestión de usuarios en cuanto a Flatee. Y de qué manera era necesario tenerla. De tal forma que no voy a entrar en esto, sino más bien en cómo la estamos implementando.

Siguiendo el principio DRY, hemos utilizado el ya ampliamente conocido plugin restful_authentication. Desde hace algún tiempo este plugin se encuentra alojado en github, lo que ha servido para que algunos miembros del equipo trabajen con git, un añadido más.

Nuestra primera misión fue instalar git en nuestras máquinas para poder funcionar con él. En mi caso, ha sido bastante sencillo hay disponible una imagen para instalar en Mac OS X, por lo que la instalación ha sido un click detrás de otro, un simple reinicio del terminal y funcionando.

Luego para descargar el plugin desde github con git, nos basta con:

git clone git://github.com/technoweenie/restful-authentication.git vendor/plugins/restful-authentication

Por otro lado al descargar la versión de restful_authentication, dado que es la última sufrimos algunos problemas, que os queremos detallar.

Lo fundamentarl ahora es generar con el plugin nuestra cuenta de usuario:

./script/generate authenticated user sessions --include-activation --stateful --rspec

las opciones que incluimos detalladas nos dan:

  • include-activation: con esto se generará un ActionMailer que nos permitirá enviar el mail de activación a los usuairos implicados.

  • stateful: da soporte al plugin: acts_as_state_machine que generara el código de activación.

  • rspec: Genera test Rspec y Stories en lugar de los tradicionales test de rails.

Existen más posibilidades, sin embargo para nosotros estas eran las necesarias.

Tras ejecutar esto, el plugin nos recomienda una serie de pasos a seguir, el primero de ellos, debemos añadir un observer al config/environment.rb:

config.active_record.observers = :user_observer

Lo siguiente es instalar acts_as_state_machine, para ello:

svn export http://elitists.textdriven.com/svn/plugins/acts_as_state_machine/trunk vendor/plugins/acts_as_state_machine

Debemos añadir las siguientes rutas a config/routes.rb:

map.signup '/signup', :controller => 'users', :action => 'new'
map.login  '/login',  :controller => 'sessions', :action => 'new'
map.logout '/logout', :controller => 'sessions', :action => 'destroy'
map.activate '/activate/:activation_code', :controller => 'users', :action => 'activate', :activation_code => nil

y modificar la existente creada por el plugin de usuarios:

map.resources :users, :member => { :suspend => :put, :unsuspend => :put, :purge => :delete }

Al modelo de usuario hay que añadirle los estados que va a utilizar el plugin acts_as_state_machine:

acts_as_state_machine :initial => :pending
state :passive
state :pending, :enter => :make_activation_code
state :active,  :enter => :do_activate
state :suspended
state :deleted, :enter => :do_delete

Como nota importante, decir que tuvimos que añadir unas líneas al init.rb del plugin, por unos errores que obteníamos de métodos ‘undefined’:

require File.dirname(FILE) + ‘/lib/authorization’
require File.dirname(FILE) + ‘/lib/authorization/stateful_roles’

Tras esto enviamos un mail al autor del plugin, por lo que consideramos es un error para que pudiese incluirlo en el repositorio y quedase corregido.

Liberar el código de Flatee

YAVisitor en nuestra entrada de bienvenida, nos sugiere liberar el código de flatee. La verdad es que la propuesta ha llegado demasiado temprano dentro de nuestras labores y en nuestras conversaciones no nos habíamos planteado esta opción.

Tanto nosotros como Linking Paths sabemos lo que es liberar código y participamos del movimiento open source. La lista de iniciativas que hemos creado o en las que participamos activamente es larga:

  • Casi todos hemos trabajado en JavaHispano, una comunidad que aboga por el open source y que es un recurso indispensable de noticias y artículos dentro del mundo java. De hecho, es la comunidad java de habla hispana más grande del mundo.

  • Proyectos open source de todo tipo: cáñamo, licurgo, belegost, jLibrary, …

  • Incluso en estos momentos estamos implicados en el desarrollo de proyectos basados en Tog, la plataforma de redes sociales, que en breve verá la luz y que desde el principio fue concebida como open source).

  • Por último, pero no menos importante, mi compañero Dani participa en estos momentos en el Google Summer of Code, tratando de crear un plugin para Grails, el cual está bajo licencia Apache, o sea libre.

flatee nace, sin dudarlo, con intención de convertirse en el servicio de alquiler de pisos compartidos referente en el mercado latino.

Si analizamos los proyectos open source de mayor éxito veremos que la gran mayoría son productos y herramientas más o menos genéricas capaces de albergar un comunidad de desarrolladores. Cada miembro de la misma puede utilizar y adaptar el software para sus propios proyectos y servicios. Las mejoras surgidas de esa adaptación pueden revertirse a la comunidad y cerrar el ciclo. Ese es el flujo que normalmente acontece en los proyectos open source y, francamente, no creemos que flatee sea un caso similar.

Sin embargo, hay otro foco de creación de proyectos open source que tiene su origen en las mejoras que acabamos de citar. Cuando estas son de un volumen respetable o forman un conjunto lógico lo suficientemente grande son encapsuladas de diferentes maneras: librerías, plugins, gemas, etc. Por ahí sí que podríamos encontrarnos con cosas liberadas bajo el paraguas de flatee, tal y como ya hemos hecho en el pasado, dado que son piezas que podríamos considerar reutilizables y beneficiosas para otros.

Finalmente y como ya hemos comentado, tenemos la intención de ir relatando los problemas con los que nos encontremos a nivel técnico dentro del desarrollo, lo cual hace que se pueda aprender de nuestra experiencia a la vez que podáis orientarnos entorno a determinados problemas que puedan surgir.

¿Por qué una web para compartir piso?

La idea surgió de una necesidad propia, lo tenía como idea/sideproject personal pendiente desde hace aproximadamente un año, que fué la última vez que busqué compañeros de piso, para lo que no había conseguido tiempo para dedicarle. Lo comenté como una posibilidad para desarrollar en el internship junto con otras que estuvimos viendo entre todos. Gracias a otros puntos de vista la idea ha tomado un enfoque distinto, sin perder la esencia original.

La última búsqueda de compañeros la realicé a traves de una web de clasificados genérica que funciona a nivel local (en Zaragoza), que tiene un tráfico bastante alto y no precisa registro de usuarios pero que a mi modo de ver, presenta bastantes limitaciones, esto me llevó a recibir demasiadas llamadas y emails. Me supuso un nivel de estrés y de pérdida de tiempo realmente alto, durante varios días no dejaba de tener llamadas y visitas. Llegando incluso 15 días después de tener las habitaciones alquiladas seguir recibiendo llamadas. Por otro lado en muchos casos en el momento de la visita/entrevista no le encajaba a quien venía a verlo o no me encajaba a mi esa persona.

De todas formas, desde el punto de vista del anunciante se puede considerar un mal menor el que ocurra esto si finalmente se consigue ocupar el piso. Pero hay otras muchas ocasiones dónde el anuncio es poco explicativo o no tiene suficiente detalle de cómo es el piso/habitaciones, ¿llamarías viendo un anuncio del tipo “Alquilo habitación céntrica, en buen estado y bien iluminada. 250€” entre otros muchos anuncios?, este tipo de anuncios suele ser de personas que no tienen muy claro qué deberían poner y se podría solucionar llevando de la mano al usuario. Así todos ganaríamos en tiempo invertido tanto en la búsqueda de compañeros como en la búsqueda de esa habitación que necesitamos.

Desde el punto de vista de quien busca un piso (que también me ha tocado hacer) que se pasea por la ciudad, hace las llamadas, compara pisos; necesita cierto nivel de detalle en los anuncios: desde alguna foto para hacerse una idea, saber de qué dispone el piso, qué tipo de persona es la buscada, dónde está localizado… para hacer el primer corte y ahorrarse caminatas o llamadas de pisos que no se ajustan.

Estas son algunas de las cosas que queremos solucionar con flatee, para mejorar la experiencia tanto de la búsqueda de piso como de nuevos compañeros.

Empezamos con flatee

En primer lugar, bienvenidos a nuestro blog, y en segundo, nos gustaría responder a una simple cuestión: ¿Qué es flatee? De momento flatee es una idea que está poniendose en marcha. Pretendemos ser una web de clasificados especializada en la búsqueda de pisos compartidos, desarrollada como parte del Internship que estamos haciendo dentro de Linking Paths.

La idea de flatee es darle una vuelta a las webs de clasificados para compartir piso: las webs especializadas están congeladas desde hace mucho tiempo, las generales de inmobiliarias a las que se les nota esa generalidad y por último las generales de clasificados que como se puede entender aportan bastante poco. De todas formas, sabemos que nuestra apuesta por la singularidad compite abiertamente en un mercado tradicional. No será fácil, pero el internship no es sólo desarrollo de software sino también hacerse valer en un sector determinado y estudiar vías de negocio.

Como parte de nuestra experiencia en esta aventura, queremos hacer público todo lo que nos acontezca. Esto quiere decir: la evolución del proyecto, los problemas encontrados por el camino, alguna recipe técnica, etc. Todo a través de este blog, que esperamos sea la puerta para establecer el contacto. De momento estamos desarrollando, aún así desde el primer momento nos gustaría recibir vuestro feedback, intercambiar ideas, vuestras aportaciones, todo hasta que podamos liberar versión y podáis empezar a utilizar el portal.

En cuanto a la parte técnica, hemos decidido utilizar Ruby on Rails como framework de desarrollo, del que por supuesto también hablaremos por aquí.

Para los que no nos conozcáis somos: Daniel Latorre y Jesús Navarrete, en breve nos presentaremos con más detalle. De momento tomen asiento y compartan con nosotros esta aventura… si les place! XD