We wanted to expand IFTTT with conditional statements and a more flexible interface which supports chaining multiple events and accessing context of triggers.

What it does

Automate is a webapp for automating tasks which provides three main types of blocks: triggers, conditionals, and events (actions). Much like in IFTTT, triggers check to see if something has occurred - whether it be a new tweet, new entry in an RSS feed, etc. Events perform some action, for example sending a text to a user.

But unlike IFTTT, Automate doesn't constrain the user to one trigger and one action; instead, the user can build a flow graph of triggers, conditionals (if statements), and events, making for a much more customizable experience. All events and conditionals can access results of the trigger (for example, the text of the tweet that triggered the chain).

How we built it

We used fabric.js for the editor front end, flask for the web back end, and asyncio for the trigger processor. We used peewee as our ORM to back our database.

Challenges we ran into

Finding a good way to store block relations in a database was difficult. We had to create a user friendly interface which serialized blocks down into a machine-readable format, which then could be parsed by the backend trigger executor.

Accomplishments that we're proud of

We are happy with our interactive web interface, and we think our webapp is well designed and clean.

What we learned

We learned how to do asynchronous processing in Python using asyncio, and how to use fabric.js for interactive interfaces.

What's next for Automate

We can very easily add more triggers and events to Automate, because it was designed in a modular fashion.

Share this project: