What is this?
It’s a free, simple command-line program that helps build complex Airtable bases while maintaining good development practices.
It allows saving images of any Airtable base at a given moment and track changes in a human and machine (Git) readable format, ensuring better reliability and collaboration.
Why making this?
I’ve been working a lot with Airtable since it was introduced to me in 2021. I used it for my marti startup products and included it in my freelancer offerings.
As a developer, I think Airtable is a wonderful multipurpose platform that mixes a stellar experience for end users, the robustness of a relational database, and a powerful low-code automation system.
But as I was building more complex and mission-critical systems, I couldn’t apply two essential workflows of classical development:
- version control to record every change, allowing rollback if the mouse slipped;
- test environment to safely make changes without crashing the deployed app.
So I had the idea of this advanced features tool on top of Airtable. The vision was infrastructure as code for Airtable with the necessary granularity of control to manage large complex bases.
The journey
The project started by planning a minimal v1 feature set:
- Capture an image of any Airtable base.
- Compare two images and output a human-readable list of changes.
I knew it could be a paid product later, but I wanted to focus on a simple, useful thing for a v1 and hoped that initial engagement would inform the creation of a paid v2.
Moreover, I wanted to start giving back to the community, as I’ve been enjoying so many open-source projects for years.
I remember using quite a lot of AI to write some parts (sometimes without success).
The first version was creating a new timestamped image file at each run, which was not practical to use with version control software like Git.
So I quickly added the option to overwrite the same image file.
I tried promoting the tool on specialized subreddits and Airtable forums. I got a bit of interest, but not really from my early adopters (developers using Airtable).
People were looking for a visual tool (quite logical for no-code users).
There was also a struggle with the value proposition: should I emphasize the multiple environments feature or the version-control one?
I couldn’t really advertise both for a v1, so I chose the first, but it was maybe a mistake.
I used the tool on my current professional projects, made some quick updates, and started seeing room for improvements.
Then I halted development to focus on building this site.
To build loved products, you want to know your early adopters needs.
So to push this project further, I should contact expert Airtable users (like freelancers) to really nail their pain points.
Maybe I will do it. Maybe not. I’m not sure if building this paid software feels interesting. Because there are so much many things I want to explore.
Still, the tool continues to help my freelance projects be more reliable.
And it is freely available for anyone to use and improve.
Tech
I decided to try a new Javascript runtime for the occasion: Deno v2, so I first had to learn it. And enjoyed the experience! It’s modern Node.js without the hassle.
Because the goal of the tool was reliability, I dived into JSON schemas to validate the images that were captured and compared. I spent time setting a standard to store the representation of an Airtable field, table, and base.
I had a lot of back-and-forth with the validation of these schemas in Javascript. It ended with Ajv package, with the correct version to support the 2020-12 JSON-schema spec I was using (which you know is 5 years old?) and the correct way of handling references (the base schema was composed of an array of table schema which contained an array of field schema).
Finally,I scaffolded the CLI with Cliffy, which was nice to work with thanks to its strong typings.