{"id":13289084,"url":"https://github.com/ducktapejs/ducktape","last_synced_at":"2025-03-10T06:34:02.762Z","repository":{"id":44050128,"uuid":"218723719","full_name":"ducktapejs/ducktape","owner":"ducktapejs","description":"A platform for sticking different platforms together","archived":false,"fork":false,"pushed_at":"2023-01-04T23:59:19.000Z","size":939,"stargazers_count":0,"open_issues_count":19,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2024-07-29T17:04:48.246Z","etag":null,"topics":["automation","azure-devops","bitrise","client","github","jira","job-scheduler","slack","webhooks"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ducktapejs.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-10-31T08:56:54.000Z","updated_at":"2024-07-29T17:04:48.247Z","dependencies_parsed_at":"2023-02-03T01:01:46.103Z","dependency_job_id":null,"html_url":"https://github.com/ducktapejs/ducktape","commit_stats":null,"previous_names":[],"tags_count":10,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ducktapejs%2Fducktape","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ducktapejs%2Fducktape/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ducktapejs%2Fducktape/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ducktapejs%2Fducktape/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ducktapejs","download_url":"https://codeload.github.com/ducktapejs/ducktape/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":242805698,"owners_count":20187996,"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":["automation","azure-devops","bitrise","client","github","jira","job-scheduler","slack","webhooks"],"created_at":"2024-07-29T17:00:25.634Z","updated_at":"2025-03-10T06:34:02.223Z","avatar_url":"https://github.com/ducktapejs.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Ducktape\n\nA platform for sticking different platforms together\n\n## Supported platforms:\n\n**Fully supported**\n* Github `@ducktapejs/integration-github`\n* Cron `@ducktapejs/integration-cron`\n* Webhook `@ducktapejs/integration-webhook`\n* Azure DevOps `@ducktapejs/integration-azure-devops`\n* Slack `@ducktapejs/integration-slack`\n\n**Work in progress**\n* AppStore Connect `@ducktapejs/integration-appstore-connect`\n* Jira `@ducktapejs/integration-jira`\n\n**Planned**\n* Pushover\n* Bitrise `@ducktapejs/integration-bitrise`\n* Google Play Store `@ducktapejs/integration-google-play-store`\n\n\n## Quick start\n\nCreate a new npm project and install `@ducktapejs/server` as well as any integrations you want, for instance `@ducktapejs/integration-github`\n\nThe easiest way to create a server is to use the provided `createBin` function to create a cli application\n\n```typescript\n#!/usr/bin/env node\n\nimport { createBin } from '@ducktapejs/server';\nimport Github from '@ducktapejs/integration-github';\n\ncreateBin({\n  url: 'localhost:3000',\n  port: 3000,\n  clients: {\n    github: new Github(),\n  },\n}, async ({ github }) =\u003e {\n  // do stuff with integrations here\n  github.hooks.on('pullrequest', async () =\u003e {\n    const client = await github.getClient('morten-olsen', 'ducktape');\n    client....\n  })\n})\n  .catch(console.error);\n```\n\nThe cli will have two actions:\n\n* **start** which starts the provided function\n* **create-config** which will guide you through configuring the integrations and create a `config.json` with the configuration result\n\nFor a project example look at `packages/core/demo`\n\n## Bundling\n\nTo bundle your new server into a single JS file you can use `@ducktapejs/bundler` to run `ducktape-bundler bundle your/file.ts` which will create a `bundle/bundle.js` file","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fducktapejs%2Fducktape","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fducktapejs%2Fducktape","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fducktapejs%2Fducktape/lists"}