Airblocks is a visual builder for creating serverless, actionable applets without code
Background
A lot of developers use Airtable with Zapier in lieu of business logic for their web apps' and side-project functionality and micro-services, but I figured instead that I could create an all-in-one solution for everyday people who don't know how to code, that enables them to store their data in a recognizable format (grid) and create action recipes using simple, sortable, visual blocks.
The Airblocks service is simple and powerful because it utilizes not only the Amazon Aurora PostgreSQL database for storage of JSON, but the serverless functionality of Amazon Lambda for actions as well! I took inspiration from tools that I've used before such as public task automation services like Workflow, IFTTT and educational tools I've used in the past like Scratch.mit.edu for the applet editor.
I wanted this project to be accessible for anyone with a internet connection, powerful enough to get important shit done, and also, most importantly — be intriguing enough to spark the light in users' heads to continue towards building with more advanced tools using their already budding familiarity to the serverless part of AWS's ecosystem.
What does it do?
If IFTTT, AWS Lambda and Google Sheets had a baby. Bridging PSQL RDBMS w/ Serverless actions.
Based on triggers from user input on visual interface, coupled with third-party data fetching. Applets are created from sortable blocks that build a JSON tree, stored in the relational database. The logic is as follows: If user selects this button on a visual interface, get data from third party service, fire Lambda function to do X with it and save returned data/value to User's data before pushing to visual interface.
In other words...Airblocks Applets monitor the interface for event emittance triggers and contain steps of what to do and where to get data from, so that if a visitor input is given an action is fired. Prebuilt Lambda functions ready to fire when called by an Applet recipe, that take parameters and does work with it before sending a response. Data from the Lambda response is saved directly to Postgres to be displayed by the user's interface.
How I built it.
hint: vue.js + webhooks + aws lambda + aws aurora psql
Relational databases work well with serverless functions, when you take away the long-term connection pooling.
Aurora's architecture was the perfect choice for this project, due to the nature of web applets being idle unless triggered explicitly by user input. It kept costs to a minimum and makes it affordable for your average internet user. Integrations with external third-party applications help to further applet logic and the incorporation of webhooks in applets encourages developers to build their own custom, exportable solutions with Airblocks for AWS.
I built Airblocks using node.js and vue.js with a backend that uses aws lambda handlers and a postgresql ORM (sequelize) to interact and sync with AWS Aurora. Simple, but effective. The precise diagram detailing my architecture can be seen below:

Challenges I ran into:
Setting up the aforementioned architecture for the project was confusing because I didn't want any unnecessary complexity and I wasn't sure of which AWS services to use, like whether to use Lambda or just Aurora Serverless. Luckily, I was able to ask a few questions at the Slack channel and get directed to resources like a Github repo of samples for building serverless apps in time to finish the project.
I ended up choosing Aurora's Postgres option over its Serverless one, though, because I was working with visual data grids and the addition of Lambda's functions was enough to mitigate a singular solution.
What's next for Airblocks?
I want to eventually create more integrations and an advanced functionality in the visual builder for applet recipes that allows users to have more control over what happens to their data before it's stored in the grid (read: mapping + filters).
I'd also like to allow users' to export their function handlers from the dashboard directly to AWS Lambda and transfer their grid data directly to AWS Aurora for more customization. It will be challenging to implement everything but it certainly should be fun and rewarding if this service proves useful!
REFERENCES:
[1]: Inspiration for Airblocks Applet Actions: https://zapier.com/apps/aws-lambda/integrations && https://github.com/aws-samples
[2]: JSONB w/ Amazon Aurora PSQL: https://www.postgresql.org/docs/9.4/static/datatype-json.html
[3]: Example of Aurora RDBMS w/ Lambda: https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraMySQL.Integrating.Lambda.html
Log in or sign up for Devpost to join the conversation.