One benefit of Kairn users love is how we connect to apps to coordinate what's asked of them cross tools. Let's dig in to why and how we build that! Beyond a feature, it's a huge part of our philosophy = you should use vertical tools with high expertise and we coordinate them
We use more SaaS than ever, super expertise focused and remote work has turned them all collaborative, with @mentions, @comments, notifications, tasks, projects.. we're asked to progress on projects across too many places, making it impossible to see, prioritise, and act.
So we build Kairn to operate as the app where all projects get centralised and updated from. This means building a killer API that connects two way to read and write on any kind of tools. Let's see how we do that (now I leave the ๐ค to Xavier our Lead Tech).
We code in #typescript (web, api) and #SwiftLang (macOS, iOS), so using #GraphQL to communicate btw our clients and API is great: type safety everywhere ๐ + subscriptions ๐ The real world ain't as stable as the hello world, but we work on it. Excited to try the defer directive
Our @SlackHQ integration was our first (great choice!) The API and SDK are very easy to use, + straightforward + tons of possibilities. We used our API instead of plugging the integration to our core code so the integration is "just" another client for us, easy peasy.
One thing to keep in mind in the @SlackHQ integration - each element of the markdown is treated differently so make sure to include them all (typically when we turn a message => task we need to whitelist all message types - lists / links / images / ...)
One super cool thing about the @SlackHQ API is their block builder that you can share with your product team so they give you the best format > app.slack.com/block-kit-builder/
One thing to keep check depending on your persona, if you target big companies, @SlackHQ integration often need to be approved by admin so include an easy copy/paste message to share // if you're targetting your startups, they're often on free plans = max 10 integrations!
Now learnings on building with the @NotionHQ API ๐ฅ
Being huge fans, we started an integration the day they released their public API. Great doc => building went smoothly ๐ด. Our integration finds checkbox elements on Notion where the user is tagged and sync 2-way with Kairn
For now, we have to call the API regularly and check for page updates as there's no webhooks. It can take time and introduces some risks, e.g. rate limiting, and some challenges: crawling several workspaces concurrently, error handling in concurrent crawls, etc.
@sindresorhusโs p-limit (github.com/sindresorhus/p-limit), and a bit of #golang inspiration, made that quite easier than expected. Looking forward to a day they will provide webhooks for page, or even block, updates!
On thing to keep in mind, make sure your integration works on all blocks as each is handled separately (Titles // columns // toggles // etc...). And the API is updated quite frequently so run checks on a regular basis ๐ฑ
Last integration we present learnings on today - @zapier. We use it to test ideas before developing our own. Having our GraphQL API ready was a game changer, as it meant that absolutely no change was necessary on our side to get our first version out.
To take it to the next level, we will have to provide OAuth2 authentication, for a better UX, and webhooks, for instant syncs. Get your Zaps certified, super easy, smooth and fast. And then create templates to easily share with users ๐ make it super fast for them to add the zaps
Ok so to end all those, what do we want to build in the future? We'll create the unified item that will enable any tool to add a synchronised collaborative project management in a few lines of code ๐ฎ talk A-P-I-F-I-R-S-T ๐ฎ #apifirst but let's master it all by building Kairn