{"id":25740156,"url":"https://github.com/datadotworld/ddw-slackbot-starter-kit","last_synced_at":"2026-06-10T13:31:36.539Z","repository":{"id":247125260,"uuid":"822779096","full_name":"datadotworld/ddw-slackbot-starter-kit","owner":"datadotworld","description":"Getting started quickly using the AI Context Engine and Slack","archived":false,"fork":false,"pushed_at":"2024-07-06T17:57:54.000Z","size":52,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-02-26T08:39:16.299Z","etag":null,"topics":["dwstruct-t01-dist"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/datadotworld.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":"2024-07-01T20:01:56.000Z","updated_at":"2024-07-01T20:50:06.000Z","dependencies_parsed_at":null,"dependency_job_id":"d435b638-375d-45f7-9dac-d589b4205753","html_url":"https://github.com/datadotworld/ddw-slackbot-starter-kit","commit_stats":null,"previous_names":["datadotworld/ddw-slackbot-starter-kit"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/datadotworld/ddw-slackbot-starter-kit","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/datadotworld%2Fddw-slackbot-starter-kit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/datadotworld%2Fddw-slackbot-starter-kit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/datadotworld%2Fddw-slackbot-starter-kit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/datadotworld%2Fddw-slackbot-starter-kit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/datadotworld","download_url":"https://codeload.github.com/datadotworld/ddw-slackbot-starter-kit/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/datadotworld%2Fddw-slackbot-starter-kit/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34155422,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-10T02:00:07.152Z","response_time":89,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["dwstruct-t01-dist"],"created_at":"2025-02-26T08:36:47.907Z","updated_at":"2026-06-10T13:31:36.529Z","avatar_url":"https://github.com/datadotworld.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Slackbot Starter Kit for data.world's AI Context Engine\n\nThis starter kit will let you quickly get started with data.world's AI Context Engine.™ It is a simple Slack app that demonstrates how to use the data.world API to send a question to the AI Context Engine and display its response in a conversation in Slack.\n\n## Getting started\n\n### Pre-requisites\n\n- Node.js v20+\n- A Slack account\n- A [data.world](https://data.world) account, with an AI Context Engine License and available Knowledge Tokens\n\n### Installation\n\nFirst, fetch this repo however you like:\n\n- Clone it using the web URL\n\n  ```sh\n  git clone https://github.com/datadotworld/ddw-slackbot-starter-kit.git\n  ```\n\nor\n\n- Use the GitHub CLI\n\n  ```sh\n  gh repo clone datadotworld/ddw-slackbot-starter-kit\n  ```\n\nor\n\n- Download it via this link [ddw-slackbot-starter-kit.zip](https://github.com/datadotworld/ddw-slackbot-starter-kit/archive/refs/heads/main.zip) and unzip it.\n\nThen, navigate to the project directory:\n\n```sh\n$ cd ddw-slackbot-starter-kit\n```\n\nGet a data.world token (either as [an individual user](https://developer.data.world/docs/api-keys-and-auth#method-2-acquiring-tokens-via-the-ui) for development, or from a [service account](https://docs.data.world/en/130574-creating-and-managing-service-accounts.html) for deployment), copy `.env.example` to `.env`, filling in the following values.\nYou will also need tokens from Slack, as [described here, in their documentation](https://api.slack.com/tutorials/tracks/first-bolt-app#create-app).\n\n```sh\nDDW_AICE_ENDPOINT=https://api.data.world\nDDW_AICE_ORG_ID=# your organization ID\nDDW_AICE_PROJECT_ID=# your project ID\nDDW_AICE_TOKEN=# your data.world token\n\nPORT=3000\n\nSLACK_BOT_TOKEN=# your Slack bot token from the Slack API\nSLACK_SIGNING_SECRET=# your Slack signing secret from the Slack API\n```\n\nIn the vast majority of most cases, you'll be able to leave the default `api_endpoint` value as is.\n\n### Running the app\n\nTo install dependencies, run:\n\n```sh\n$ npm install\n```\n\nThen, to start the bot locally, run:\n\n```sh\n$ npm run dev\n```\n\nFrom here, you can use a tool like [ngrok](https://ngrok.com/) to expose your local server to the internet.\n\n```sh\n$ ngrok http 3000\n```\n\nYou can then use the URL provided by ngrok to set up your Slack app's event subscriptions and interactive components. You can find these settings in the Slack API settings for your app, under the \"Event Subscriptions\" section.\n\n\u003ehttps://api.slack.com/apps/YR_APP_ID/event-subscriptions\n\nYou'll enter your URL with the path `/slack/events` appended to it.\n\n\u003ehttps://YR_NGROK_URL/slack/events\n\nOnce the URL has been verified, you can then start chatting with your bot in Slack via DM.\n\n#### Running with Docker\n\nAlternatively, we have included a Dockerfile suitable for local development or for deploying your Slackbot. To build the Docker image, run:\n\n```sh\n$ docker build -t yr-slackbot .\n```\n\nEnsure that the `.env` file is in the same directory as the Dockerfile. To run the Docker container, run:\n\n```sh\n$ docker run --env-file .env yr-slackbot\n```\n\n#### Starting the Application with Docker\n\nTo start the application using Docker, you can use the following command:\n\n```sh\ndocker run -p 3000:3000 --env-file .env yr-slackbot\n```\n\nThis command runs the Docker container and maps port 3000 of the container to port 3000 on your host, ensuring the application is accessible. Make sure the `.env` file is correctly configured as it will be used by the application running inside the Docker container.\n\n#### Starting the Application with Docker Compose\n\nAlternatively, you can use `docker-compose` to start the application. This method is useful if you plan to run multiple services. To start the application using `docker-compose`, run:\n\n```sh\ndocker-compose up\n```\n\nThis command reads the `docker-compose.yml` file and starts the application as defined. It automatically builds the image if it's not already built and starts the services specified. The application will be accessible on port 3000.\n\n### Developing the app\n\nThe app is built using [Bolt for JavaScript](https://slack.dev/bolt-js/). You can find the documentation for Bolt [here](https://slack.dev/bolt-js/).\nFor the codebase, the primary logic is split between `listeners/messages/index.ts` and `api/index.ts`. The API calls to the AI Context Engine are fully-typed, using generated type definitions from the data.world API's OpenAPI spec. Those type definitions are in `types/api-v0.d.ts`.\n\n### Deploying the app\n\nYou can deploy the app anywhere that can serve a Docker image.\n\nThe app is ready to be deployed to Heroku. To do so, you will need to have the [Heroku CLI](https://devcenter.heroku.com/articles/heroku-cli) installed. You will also need to have a Heroku account.\n\n#### Deploying to Heroku\n\nAfter installing the Heroku CLI, you can deploy the app to Heroku by running the following commands:\n\n```sh\nheroku login\n```\n\n```sh\nheroku create \u003capp-name\u003e -t \u003cteam-name\u003e\n```\n\nSet the fields from the `.env` file as Heroku environment variables in the Heroku dashboard for the app you just created.\n\nThen, push the code to Heroku:\n\n```sh\ngit push heroku main\n```\n\nOnce you have the URL for your app, update the field `settings.event_subscriptions.request_url` in either the `manifest.json` or the Slack API settings for your app, under the \"Event Subscriptions\" section, to point to the URL of your Heroku app.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdatadotworld%2Fddw-slackbot-starter-kit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdatadotworld%2Fddw-slackbot-starter-kit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdatadotworld%2Fddw-slackbot-starter-kit/lists"}