{"id":21229009,"url":"https://github.com/tpps88206/jira2notion","last_synced_at":"2025-04-13T23:45:00.944Z","repository":{"id":122124143,"uuid":"389326271","full_name":"tpps88206/JIRA2Notion","owner":"tpps88206","description":"A small Node app to create or update Notion pages from Jira issues.","archived":false,"fork":false,"pushed_at":"2021-08-01T17:43:34.000Z","size":3164,"stargazers_count":4,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-27T13:51:18.552Z","etag":null,"topics":["firestore","jira","node","notion","typescript"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tpps88206.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-07-25T11:01:50.000Z","updated_at":"2023-10-16T18:45:20.000Z","dependencies_parsed_at":null,"dependency_job_id":"3087f2ee-149a-44ca-83d9-e958081d2afd","html_url":"https://github.com/tpps88206/JIRA2Notion","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tpps88206%2FJIRA2Notion","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tpps88206%2FJIRA2Notion/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tpps88206%2FJIRA2Notion/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tpps88206%2FJIRA2Notion/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tpps88206","download_url":"https://codeload.github.com/tpps88206/JIRA2Notion/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248799672,"owners_count":21163398,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["firestore","jira","node","notion","typescript"],"created_at":"2024-11-20T23:24:02.577Z","updated_at":"2025-04-13T23:45:00.882Z","avatar_url":"https://github.com/tpps88206.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cimg align=\"left\" width=\"100\" height=\"100\" src=\"./docs/logo.png\"\u003e\n\n# JIRA2Notion\n\nA small Node app to create or update Notion pages from Jira issues.\n\n![flow.png](./docs/flow.png)\n\n* [Features](#features)\n* [Prerequisitel](#prerequisite)\n* [Installation](#installation)\n* [License](#license)\n\n## 🚀 Features\n- ✅ Import issues from JIRA into Notion regularly\n    - Regularly time: Every hour from 09:00 (UTC+8) through 21:00 (UTC+8) on every day-of-week from Monday through Friday.\n    - Condition: Has been updated in the past 12 hours and is the current user’s issue.\n- ✅ Check whether the issue already exists in Notion to avoid repeated import.\n- ✅ Check whether the issue status of the existing Notion is the same as the status in JIRA, and update it.\n- ✅ Use [Firestore](https://firebase.google.com/docs/firestore) to save all sensitive data.\n\n## 📝 Prerequisite\n\nIf you did not serve your own server, you do not need to create Firestore database.\n\n**Just follow step 1 to 23 generate your JIRA and Notion token and setup Notion page.**\n\nAnd give your token to somebody who serves the server and Firestore database.\n\n\n### 1. Generate JIRA token\n\nWe need JIRA token to access your JIRA data without user ID and password.\n\n- 1. Login and go to [Atlassian manage profile](https://id.atlassian.com/manage-profile/security/api-tokens). Click create API token.\n    ![jira01.png](./docs/jira01.png)\n     \n- 2. Copy your JIRA token.\n    ![jira02.png](./docs/jira02.png)\n\n### 2. Setup the Notion page\n\nThe page which you want to import the JIRA issues need to have specified columns.\n\nIn the real version, we have defined the following fields. \n\nWe expect to add more fields in the future and manage these fields through config.\n\n- Done\n    - type: `Checkbox`\n- Status\n    - type: `Single select`\n- Name\n    - type: `Title`\n- JIRA Key\n    - type: `Text`\n- JIRA Link\n    - type: `URL`\n    \nIt will look like\n![notion04.png](./docs/notion04.png)\n\n### 3. Generate Notion token and setup page\n\nWe need Notion token to access your Notion database.\n\n- 1. Login and go to [Notion integrations page](https://www.notion.so/my-integrations). Click create new integration.\n     ![notion01.png](./docs/notion01.png)\n\n- 2. Copy your Notion token.\n     ![notion02.gif](./docs/notion02.gif)\n     \n- 3. Share a database with your integration.\n     ![notion03.gif](./docs/notion03.gif)\n\n- 4. Copy the database ID.\n    ```shell\n    https://www.notion.so/myworkspace/a8aec43384f447ed84390e8e42c2e089?v=...\n                                      |--------- Database ID --------|\n    ```\n\n### 4. Connection file for Firestore (Optional)\n\nIn order to store sensitive data, including information such as certificates and mailboxes, and to manage configuration parameters through the Firestore database in the future.\n\nWe must first create a Firestore database and link it.\n\n- 1. Go to [Firestore console](https://console.firebase.google.com/) and create new project\n     ![firestore01.png](./docs/firestore01.png)\n\n- 2. Generate a new private key and save the JSON file.\n     ![firestore02.png](./docs/firestore02.png)\n\n- 3. Please add it into `./server/configs` folder, and rename it to `serviceAccountKey.json`. **Remember do not commit yours `serviceAccountKey.json` to the cloud.**\n     ![firestore03.png](./docs/firestore03.png)\n     \n### 5. Configuration schema in Firestore (Optional)\n\nGo to your Firebase console, and setup Database with following schema.\n\n- Path\n    ```shell\n    users (collection)\n    --\u003e \u003cAUTO_GENERATE_UID\u003e (document)\n    ----\u003e (fields)\n    ```\n\n- Fields\n    ```json\n    {\n        \"jiraEmail\": \"\u003cYOUR_JIRA_ACCOUNT_EMAIL\u003e\",\n        \"jiraToken\": \"\u003cYOUR_JIRA_ACCOUNT_TOKEN\u003e\",\n        \"notionDatabaseId\": \"\u003cYOUR_NOTION_DATABASE_ID\u003e\",\n        \"notionToken\": \"\u003cYOUR_NOTION_TOKEN\u003e\"\n    }\n    ```\n  \nWhen everything is done, your Firestore will look like this:\n![firestore04.png](./docs/firestore04.png)\n\n**If you need handle multiple account, just add data in (document) below `users` (collection)**\n\n## 👷 Installation\n\n### Environment\n\n- Node: v14.16.1\n\n### Auto run\n\nAfter you finish the above configurations, then do\n\n```shell\nsh ./scripts/runScript.sh\n```\n\nIt will build the latest version of the code and name the container to `jira2notion` and auto run it.\n\n### Manual run in local (Optioneal)\n\n#### Run without docker in once time\n\n```shell\ncd server\nyarn install\nyarn start\n```\n\n#### Build docker\n```shell\ndocker build -f scripts/Dockerfile -t jira2notion:latest .\n```\n\n#### Run docker\n```shell\ndocker run --name jira2notion -dit jira2notion\n```\n\n## 🔑 License\n\nReleased under the MIT License.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftpps88206%2Fjira2notion","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftpps88206%2Fjira2notion","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftpps88206%2Fjira2notion/lists"}