phil-ociraptor / sos-landing

Landing page for Summer of Shipping. (May evolve into much more than a landing page)
https://summerofshipping.com
12 stars 9 forks source link

Spike Airtable as our data store #23

Open justonsky opened 4 years ago

justonsky commented 4 years ago

Coming from the discussion in #21:

Objective

To explore the feasibility of using Airtable as our data store.

I had signed up for Airtable earlier and, in my initial look-around, set-up my own base with projects and persons tables with a few of the fields of our schema detailed in #8. A few things I've enjoyed about it:

However, potential issues I've found:

Collaborators

This will be owned by the data team: @esu2020 @pandevim @justonsky. Eva & I will further explore this.

Deliverable

An Airtable prototype, information from mentors who've used Airtable in the past, anything to develop our understanding of what it would take for us to integrate with Airtable.

justonsky commented 4 years ago

API rate limits: The API is limited to 5 requests per second per base. If we exceed this rather low ceiling, you will receive a 429 status code and will need to wait 30 seconds before subsequent requests will succeed. This could be a big issue and might even disqualify Airtable as our solution.

I did some research and found what may be a suitable workaround for Airtable API rate limit. Following these two tutorials, I built a prototype serverless proxy backend with Netlify with a AWS Cloudfront CDN (free tier) to cache requests and hopefully prevent hitting the limit should we have many users. You can try doing a GET request to either endpoint:

Repository can be found here.

justonsky commented 4 years ago

One thing I just realized is that I've been using Airtable's Pro plan trial (totally forgot that was activated). I took a look at the benefits given to the Free and paid tiers. Unfortunately, after my Pro trial expires in two years we would not have the benefit of limiting which (invited) collaborators can add/remove new rows to tables. I think so long as we plan out how the Airtable base is shared among us we should be totally fine, but I just wanted to make it known.