DEV Community

Cover image for How I used Slack's Canvas API to stop losing my meeting notes
Egor
Egor

Posted on

How I used Slack's Canvas API to stop losing my meeting notes

My notes for upcoming meetings used to live in three different places: Slack reminders, DMs to myself, and a txt file on my laptop. I never found the right one before a meeting started.

So I built Meeting Notes, a Slack bot that gives each meeting (or recurring series) its own private canvas, synced with Google Calendar.

What it does

  • A Home tab lists your meetings for the next 7 days
  • Each meeting gets a private Slack canvas only you can see
  • A recurring meeting keeps one canvas: a new section per date, newest on top, so the whole history with that person or team is in one place
  • Templates (built-in or your own) pre-fill every new section automatically
  • An optional DM reminds you a few minutes before a meeting, linking straight to its notes
  • Read-only Google Calendar sync keeps dates up to date on their own

A couple of things I learned building it

Slack Canvas's API has an insert_at_start edit operation, which is exactly what you want for "newest on top": each new date section gets inserted above the existing ones in one call, no need to read the whole document and rewrite it.

Canvases are created with the user's own OAuth token, not the bot's — that's what makes them private to just that person, since the bot token alone can't see them.

Stack

TypeScript, Slack's Bolt framework, SQLite (node:sqlite), Google Calendar API, hosted on Railway.

Caveat

It's built on Slack canvases, which only exist on paid Slack plans — free workspaces can't use it.

This is launch week for me, no users outside my own testing yet. Would love feedback, especially anything confusing in the install flow or the Home tab: https://notes.tappuccino.dev/

Top comments (0)