Awesome
notion-board
Monitor your Node.js modules and repositories from a Notion page!
How it works
This project is a GitHub Action that exports a set of data gathered from GitHub and NPM to publish it your Notion.
Doing so you will be able to monitor and filter your Node.js modules and repositories from a single page and much more.
Here an example of the Fastify organization's status board!
The collected data are:
- GitHub repository name
- NPM downloads per month
- GitHub stars
- GitHub topics
- Number of open issues, optionally filtered by labels
- Number of open pull requests
- Latest version published on NPM
- Checkbox to mark archived repositories
- Direct link to the repository
- Direct link to the NPM page
- NPM package size in bytes
- Last commit date
- Last edited date
Here is a sample database template it will be used to store the data.
Note
The project is still in early development and the data exported are not yet customizable nor configurable.
I aim to make this application available from the Notion Connections marketplace.
How it works in details
This GitHub Action will:
- Create all the missing columns into the Notion database
- Fetch the list of repositories from GitHub using the provided
github-repository-query
input. You can test the query on GitHub Search - For each repository will check if it's a Node.js module and if it's published on NPM collecting additional data
- Read the Notion database and update the existing rows or create new ones
Known behaviors
- Unrecognized columns will be untouched
- If the row's data is not changed, the row will not be updated to minimize the API calls
Usage
To install this GitHub Action, you need to create a new GitHub repository and add a .github/workflows/notion-board.yml
file with the following content:
name: Notion Board
on:
workflow_dispatch: # Allow manual trigger to force the update
schedule:
- cron: "0 12 * * *" # Sync it "Everyday at 12:00 UTC (5:00 PT)" https://crontab.guru/#0_12_*_*_*
jobs:
update-notion-board:
runs-on: ubuntu-latest
steps:
- name: Update Notion
uses: Eomm/notion-board@v0
with:
github-repository-query: user:Eomm is:public # Replace with your query eg: "org:fastify"
notion-token: ${{ secrets.NOTION_TOKEN }}
notion-database-id: ${{ secrets.NOTION_DATABASE_ID }}
How to configure Notion
In order to use this GitHub Action, you need to create:
- A notion integration token to allow the GitHub Action to update the database
- An empty notion database to store the data
Create the Notion API token
To get the token, you must follow the official Notion documentation to create the required resources.
Note that you must add the following Capabilities
to the integration:
- Read content: to read the database and skip the unchanged rows
- Update content: to update existing rows, minimizing the payload
- Insert content: to insert new rows
Create the Notion database
To create the database, you can follow the official Notion documentation or follow this quick guide:
Step | Description |
---|---|
Create an empty page | |
Create an empty inline database | |
Add to the page, the connection you created to get the API token | |
Share the database link to get a link that contains the ID | |
Last step | Add the database ID to the GitHub Action secrets |
Note
The Action will add to the database all the necessary columns. If you rename the columns or change the column's type, the columns will be added again. So, right now you can't change the columns' name or type.
Inputs
Input | Description | Required | Default |
---|---|---|---|
github-repository-query | The GitHub repository query to fetch the repositories to monitor. You can test the query on GitHub Search | Yes | |
github-issue-labels | Filter the issues counter by labels. Example: good first issue | No | |
notion-token | The Notion API key to use to update the database | Yes | |
notion-database-id | The Notion database ID to update | Yes | |
github-token | The GitHub token to use to fetch the repositories | No | ${{github.token}} |
delete-additional-rows | Delete Notion database's rows if they are not present in the GitHub query. | No | true |
log-level | The log level to use | No | info |
License
Copyright Manuel Spigolon, Licensed under MIT.