Lyft #Dashbutton


Lyft #Dashbutton

I configured an AWS dashbutton that calls a Lyft ride to the address of my next google calendar event. I wrote a script that calls five APIs, maintaining the constraint of no written user input or output. To store my credentials for those APIs, I am using a DynamoDB and an AWS lambda function to configure the button.

Image of Dashbutton

How it works?

  • The button lives next to my door.
  • I push the button.
  • The physical push connects the button to my wifi and wakes up the serverless AWS lambda function.
  • The lambda function just calls the python script.
  • The script will go to my google calendar and check my next event and grab that address.
  • The next function will grab that address and convert it to a tuple of longitude and latitude.
  • The next API call will request a Lyft ride from my home to that point.
  • The next API call will send me a Twilio notification with the result of the process.
  • The lambda function in the AWS server will go back to sleep.

The script can also:

  • Import and save my different credentials in a DynamoDB.
  • Request new tokens when a credential has expired.
  • Thanks to the AWS server, save some usage statistics.

Technologies

  • Python. All the calls to the different Apis are written in Python.
  • AWS lambda for responding to the Dashbutton push.
  • Twilio for alerting the user when an error happens.

Structure

I’m using a number of APIs to work properly:

  • Google Credential
  • Google Calendar API
  • Google Maps Requests
  • Dynamodb (I’m using boto3 to work with the dynamoDB)
  • Lyft API (I’m using the lyft_rides library to work with the Lyft API)
  • Twilio API (I’m using the twilio.rest library to work with this API)

Installation

All the dependencies are listed in requirements.txt.

Possible Improvements

This project was completed in under a month, so there are definitely areas for improvement. Specifically:

  • Tests are needed.
  • Functionality for setting up the button from different “homes”.
  • Functionality for setting up different buttons.

Author

Hi! My name is Cristina Rodriguez , and I am a software engineer. I received training from Hackbright Academy, an engineering bootcamp for women in San Francisco (graduation: March 2017). I used to work as a project manager for a software company, and there I got interested in learning Python and being able to create my software projects. I’m currently seeking a front-end developer role in the San Francisco Bay Area. If you have a role that I should hear about, feel free to email yosola at gmail.