Tenía curiosidad sobre los Fondos Común de Inversión del banco Santander pero lamentablemente el home banking no tiene la mejor UX. No ofrece gráficos, ni  valores históricos de cada día; solamente la variación diaria y de los últimos 30, 90 y 365 días.

La página pueden verla en: https://santander.betzerra.com

Cómo empezar

La información es pública así que pude armar un script para bajarla (estos posts sobre cómo usar Nokogiri para parsear HTML me sirvieron mucho).

Una vez que obtuve la información necesaria, tuve que armar un website para visualizarla. Para eso usé Ruby on Rails. Me llevó un tiempo aprender las convenciones y entender las tools, pero al rato me pareció muy agradable de usar ❤️.

Tareas programadas

El website tiene que actualizar diariamente las cotizaciones. Hay varios tutoriales que enseñan eso. Ninguno me sirvió 100% porque mi app es deployada con Dokku así que tuve que cambiar algunas cosas:

  • Armé una rake task.
  • Me aseguré que funcionara ejecutando dokku --rm run app_name rake fetch (más sobre correr comandos en un container de dokku acá)
  • Una vez que tuve todo funcionando, metí ese mismo comando en el crontab del servidor.
00 9 * * * dokku --rm run app_name rake fetch

🎨👨🏽‍🎨

Una de las mayores dificultades fue mi falta de experiencia en web frontend. Para eso decidí comprar un theme de Bootstrap que se llama DashKit.

Al principio no entendía qué tenía que hacer con los archivos del theme. Una forma (posiblemente la menos elegante pero la más sencilla) es copiando los archivos compilados a la carpeta public.

Seguridad

Necesitaba restringir el acceso a algunas páginas del website pero no quería armar todo un proceso de autenticación. No necesito login / sign up de varios usuarios. Solamente poner una password y evitar que otras personas entren a mi "panel de control" y modifiquen los valores de los FCI.

Para eso encontré una gem que se llama Lockup que hace EXACTMENTE lo que buscaba.

¿Y ahora?

Eso es todo. Fue un desarrollo de un par de fines de semana cuyo resultado me dio mucha satisfacción.

A medida que pase el tiempo iré mejorándolo y aprendiendo más sobre desarrollo web con Rails. En algún momento tendré que agregar paginado a las cotizaciones, optimizar la carga de algunas páginas y ver la forma de agregar más FCI sin arruinar la UX.