Estos son algunos de los proyectos en los que trabajo en mi tiempo libre.

Yboard

Yboard es una aplicación web que brinda un espacio de trabajo multiplayer en tiempo real. Está desarrollado utilizando una implementación de CRDTs en Javascript llamada Yjs. Consiste en una serie de aplicaciones minimalistas las cuales se enfocan en reflejar un estado compartido entre todos los usuarios conectados a una misma sala.

Puedes ver una versión en vivo en https://yboard.lol

O revisar el código en su repositorio: https://github.com/felipeleivav/yboard

DBcloner

DBcloner es una aplicación de escritorio para clonar bases de datos remotas en tu ambiente local (actualmente soporta PostgreSQL desde su versión 9, MySQL y MariaDB vendrán en futuros releases).

Lo que hace es extraer un dump de la base de datos remota y montarla sobre un contenedor, el que se puede gestionar fácilmente usando las funciones que trae DBcloner: tomar snapshots, restaurar un estado anterior, re-sincronizar desde remoto, etc.

Estas funciones apuntan a que puedas trabajar de forma mas tranquila, ya que no necesitas apuntar a bases de datos compartidas para probar cambios en el código de tu aplicación o correr queries complejas que puedan romper datos o colgar la bd remota que todos utilizan.

Lo mejor es que no necesitas instalar runtimes de los motores de base de datos, ya que al utilizar Docker los clones existirán dentro de contenedores.

Captura de DBcloner corriendo una réplica de postgres.

Stack

  • Node 14
  • Electron 13
  • Vue 2
  • Element UI
  • dockerode – librería para comunicación con la API de Docker

Dynamock

Es una aplicación web experimental para la creación de APIs. Fue inicialmente concebido para hacer mocking de APIs Json de forma dinámica. La mayoría de las apps para mockear servicios solo permiten definir un response estático, Dynamock fue creado con la idea de poder generar mocks dinámicos cuyos responses pudiesen variar según parámetros en la solicitud HTTP.

Dynamock además permite que las APIs puedan almacenar datos, los cuales pueden ser manipulados también desde el panel de Dynamock, permitiendo crear APIs más complejas que un simple mock, ya que también podrán almacenar y recuperar información.

El main goal de Dynamock es permitir la generación de APIs sencillas en el menor tiempo posible, sin la necesidad de instalar nada en ninguna parte y utilizando un lenguaje basado en JSON para la codificación de APIs llamado Jsonnet, el cual fue desarrollado por Google para propósitos de configuración, pero que dado la similitud con JSON, lo he aprovechado para incluirlo en Dynamock a modo de hacer la codificación de APIs JSON más natural.

¡Dynamock en acción!

Stack

Dynamock fue desarrollado utilizando las siguientes tecnologías:

  • Angular 8 + Material
  • PostgreSQL como motor principal de BD
  • CouchDB como motor de BD para mocks
  • Java (Jersey + Jetty y Javalin)
  • Jsonnet (Un super JSON modificado para la ocasión)

Autoping

Autoping es un SaaS que desarrolle hace un par de años pero la verdad nunca ganó mayor tracción ya que terminé enfocándome en otros proyectos.

Autoping básicamente es un monitor web. Monitorea sitios, endpoints o cualquier cosa que sea HTTP, realizando pings cada tantos minutos verificando que la URL esté “viva” (200). La idea es simple pero la implementación es un poquito más compleja.

Internamente los monitores son procesos batch que de forma concurrente ejecutan checks contra las URLs registradas, almacenando todos los response para que luego puedan ser visualizados en tiempo real desde el panel de usuario. Para evitar la acumulación masiva de datos, existe un proceso que va generando resúmenes una vez que la información ya cumple un tiempo definido.

Existe todo un sistema de reportería automatizada y en línea que permite conocer a los usuarios el estado de sus sitios ahora y en X tiempo hacia atrás. Como se trata de monitoreo también es importante el alerting, para lo cual cuenta con alertas instantáneas por correo y Slack.

Panel de Autoping

Stack

Autoping se desarrolló utilizando las siguientes tecnologías:

  • AngularJS (con CoreUI como template)
  • Java (Jersey + Jetty)
  • MariaDB como motor de base de datos
  • ZeroMQ para procesos internos de mensajería