Live

SendRules

A backend system to send notifications to users.

It takes care of selecting the appropriate language for the recipient, and handling the user preferences for what channel to use to receive each kind of message (email, sms, telegram message).

It can also be seen as an internal proxy to different notification services providers, like twilio, sendgrid, mailgun, etc.. useful to avoid vendor lock-in.

This project was born after having seen different companies building this very same system in different ways and just with slightly different needs.

Sending notifications is a need that almost every company has, but it is rarely a core business feature, so, having a software that covers those needs would result in saving many hours of software engineering.

Technologies used: Go, Postgresql, Redis.

Opensource code

Handy Framework

A small set of Go code that can be used to bootstrap a Web or an API.

(Currently is work in progress and should not be used in production environments).

Technologies used: Go

Handy Framework Ansible

Ansible playbooks to publish dockerized apps in an small Virtual Private Server.

  • One for server provisioning
  • One for app deployment

The intention of these scripts are not to have production level services but to be able to deploy conteinarized apps into a VPS (for example to show case personal projects). So, the idea is to deploy a shared DB (postgresql) and a shared redis instance, and made those available to the running docker containers in the VPS.

A container to provide a docker respository (backed by AWS S3) is used, as well as an additional container that checks the health status of others and respawn them in case those fail.

Technologies: Docker, Python, Ansible.

DynLimits

A proxy server for rate limiting request based on a per endpoint and api key (user).

It allows to have different rate limits for POST or GET endpoints, as well as dynamically changing those limits.

Live API Checker

The main idea behind this api proxy was to check the requests received agains an OpenAPI spec.

The main idea was to actually have a “coverage” of the requests made on integration tests (and know what endpoints have not been hit).

Bracket tool

Tool to generate competition brackets.

Technologies: Python.

Autobackup script

A small python script tool, to check new and updated files in a directory and create a backup for them.

Technologies: Python.

Twchess

An old toy project to tweet chess boards and play by

Offline old projects

Alquilino.com

A web page to keep track of prices of places to rent, scrapping the two main spanish sites: idealista.com and fotocasa.com (the api was put public in this pyappapi github repo).

The API used was extracted from reversing the android mobile apps, and several different servers (workers) were used at the same time to not hit the rate limit, extract the information and send it to a main server.

On the main server, the flat images and other data where used to identify duplicates of the same flate.

Technologies used: Python, Django, Postgresql

Katagatame

Katagatame was a website to help organize brazillian jiu jitsu competitions.

It helped with:

  • Handling inscriptions: receive inscriptions payments through PayPal, and automatically assigns competitors to its corresponding categories.
  • Generate brackets: automatically put to a maximum distance the competitors of the same team in the same category, and create clashes as diverse as possible, trying to avoid repeated team confrontations in the first round.
  • Create a schedule: Given the brackets, it creates a schedule for each mat.
  • Create a printable PDF with brackets and Excel file to keep track of results.
  • It scrapped new upcoming competitions, and had a facebook bot to notify those new events.

Technologies used: Python, Django, Postgresql