Back in 2005 I was creating small websites in an attempt to capture traffic from Google search engine, and redirect visitors to various affiliate programs. This involved generating many small static websites on specific topics and uploading these to managed hosting. It worked relatively well until the product advertised by me was discontinued. At that point I had to go back and find every single URL to the old advertised product and switch those to a new one. As it turned out, going through each server, downloading current files, finding and updating URLs and then uploading these back was painful. To prevent something like this in future I created a PHP script and pointed all URLs in articles to this PHP script. From there the PHP script was redirecting to the URL I provided in the configuration file.
In 2007 I was hired to create a small custom desktop application for searching song lyrics. One of the requirements was to insert small help buttons next to the key areas, which would open browser and load page with tutorial on how to use this feature. This worked very well until the domain which used to host help pages was changed. The application was updated, but people who had already installed it, found all their links to online help broken, which led to much confusion.
The idea of an online service for this and similar situations was lingering for quite a while. It always felt like such a simple service should already exist, since there are so many URL shortening services, including Bitly.com, Goo.gl, Tinyurl.com, but all of them either lack ability to change destination for the URL or provide interface which does not allow handling real life cases where you get to manage hundreds or thousand of links. And none really provide any way to handle various types of clients (mobile, desktop, tablets) or languages.
That’s how the idea to create Redirecto.IO was born. The idea is to provide a simple spreadsheet-like interface with rules telling where the user should be redirected based on where (s)he came, what device was used, what language, etc. Also, the key ingredient I believe should be data portability. With just a simple "copy-paste", I want the customer to be able to remove their data from my service, in case they change their mind, or to back it up, or to run some report, etc.
As typical for all projects that I am working on, I try to find some functionality that could become independent of my projects. As a result of my work on Redirecto.IO, the following completely independent modules were created:
- Node.JS module Map Table - https://github.com/hippich/map-table
- Drupal 7.x Feature module to create 2-level affiliate program based on Commerce framework - https://github.com/hippich/drupal_commerce_affiliates_feature
These are very much a work in progress (that partial reason why I did not publish Drupal module on drupal.org yet.) I will cover these two modules in more detail in future posts, as well as describe the approach I used to create Redirect.IO.