Notion Random Thought

An integration for the Notion note-taking app

Description

Notion has been my note-taking app of choice for some time now. In particular I find it's simple database functionality extremely useful. However I can be quite a forgetful person so I wanted a system by which I could randomly resurface ideas

My major issue here was that a view into a Notion database can only pull data from a single source but my ideas (or other data) may be spread across many databases with different schemas. Perhaps outside an existing application, a NoSQL database solution would be appropriate but I wanted to continue using Notion

Originally I created this with a proprietary serverless function service called Pipedream. I have since migrated the system over to AWS Lambda so it sits on a more standardised platform, there is more potential to expand, and I got to learn an industry standard cloud service

Via Notion's API I could now pull data from many sources, choose some entries at random, create some simple reference items, and push them to a new database



Source code available at the link below

Post-analysis

This project was a great success and has achieved the goal it was originally intended for. It has provided some fantastic learning for serverless functions, originally in a proprietary system (Pipedream) but also in a standard industrial product (AWS Lambda). Additional experience interacting with REST api is always useful also

Whilst the goal has been achieved there is always room for improvement. Testing is minimal and error handling has some blindspots. Now that this is on AWS I can begin to leverage its wealth of resources to stablise the system

Ultimately I think it would be good to release this as a public product but it requires a lot more tooling. As it currently stands the code can be shared and others can set this system up for themselves in their own Notion workspace but it isn't exactly user-friendly, especially to non-developers

This may involve setting up AWS Cognito so that users can configure their integration, a simple web page to log in and configure, and a lot more testing. Maybe I'll get round to this in the future