{"id":21031294,"url":"https://github.com/workable/orka","last_synced_at":"2026-01-23T17:12:54.764Z","repository":{"id":38756469,"uuid":"186832746","full_name":"Workable/orka","owner":"Workable","description":null,"archived":false,"fork":false,"pushed_at":"2024-11-15T09:49:25.000Z","size":1537,"stargazers_count":8,"open_issues_count":8,"forks_count":2,"subscribers_count":31,"default_branch":"master","last_synced_at":"2024-11-15T10:39:10.484Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"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/Workable.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":"CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-05-15T13:31:57.000Z","updated_at":"2024-11-07T11:28:50.000Z","dependencies_parsed_at":"2024-03-28T15:30:30.581Z","dependency_job_id":"9f8ade9e-f5b6-40fc-9de4-d44b85b6bd07","html_url":"https://github.com/Workable/orka","commit_stats":null,"previous_names":[],"tags_count":163,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Workable%2Forka","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Workable%2Forka/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Workable%2Forka/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Workable%2Forka/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Workable","download_url":"https://codeload.github.com/Workable/orka/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225349138,"owners_count":17460315,"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":[],"created_at":"2024-11-19T12:27:08.646Z","updated_at":"2026-01-23T17:12:54.737Z","avatar_url":"https://github.com/Workable.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"```\n                O          .\n             O            ' '\n               o         '   .\n             o         .'\n          __________.-'       '...___\n       .-'                      ###  '''...__\n      /   a###                 ##            ''--.._ ______\n      '.                      #     ########        '   .-'\n        '-._          ..**********####  ___...---'''\\   '\n            '-._     __________...---'''             \\   l\n                \\   |                                 '._|\n                 \\__;\n```\n\n# Orka\n\nA modern Node.js framework based on koa@2 that comes powered with RabbitMQ, Kafka, MongoDB and Redis integrations out of the box.\n\n## Installation\n\n`npm install @workablehr/orka`\n\n## Usage\n\nOrka uses some defaults for the below values in your config.js\n\n```js\nconfig = {\n  nodeEnv :'development';\n  app: {\n    name: 'orka', // will be used as newrelic name, rabbit-queue prefix\n    env: 'demo' // will be used as newrelic, honeybadger env - defaults to NODE_ENV\n  },\n  mongodb: {\n    url: '',\n    options: {}\n  },\n  redis: {\n    url:'',\n    options: {\n      tls: {     // If those fields are empty they will not be passed in\n        ca: [],  // Redis driver. This way you can have the same app working\n        cert: '',// with a redis that support tls and a redis that doesn't with\n        key: ''  // environment variable changes only.\n      }\n    }\n  }\n  honeybadger:{\n    apiKey: '', // will not add honeybadger by default\n  }\n  newRelicLicenseKey: '', // will not add newrelic by default\n  log : {\n    pattern: '%[[%d] [%p] %c%] %m',\n    level: 'debug',\n  },\n  port: 3000,\n  cors: {\n    allowedOrigins: ['localhost', 'lvh.me'],\n    credentials: true, // Adds cors needed for exchanging cookies over https.\n    publicPrefixes: ['/publicEndpoints/foo/bar'] // ctx.path prefixes that will return access-control-allow-origin: *\n    …\n  },\n  traceHeaderName: 'X-Orka-Request-Id', // for logging in http requests\n  visitor: { orka: true, cookie : 'wmc' }, // for adding visitor id in ctx.state\n  headersRegex: '^X-.*', // for logging headers in http requests\n  blacklistedErrorCodes: [404] // will not send to honeybadger requests with this status\n}\n```\n\n```js\nconst { orka } = require('@workablehr/orka');\n\n// these options are the defaults\norka({\n  appName: '', // defaults to config.app.name\n  typescript: false,\n  honeyBadger: {\n    developmentEnvironments: ['development', 'test']\n  },\n  routesPath: path.resolve('./config/routes'),\n  diamorphosis: {\n    configFolder: path.resolve('config'),\n    configPath: path.resolve('config/config.js'),\n    envFolder: path.resolve('config/env')\n    loadDotEnv: ['development']\n  },\n  beforeMiddleware: async (app, config) =\u003e [], // return array of Middlewares or one Middleware\n  afterMiddleware: async (app, config) =\u003e [], // return array of Middlewares or one Middleware\n  beforeStart: [] // functions to run before start\n}).start();\n\n// this way you can update some configuration with envs only.\n```\n\nUsing the builder you can access a fluent API for initiliazing your server.\n\n```js\nconst { builder } = require('@workablehr/orka');\n\nbuilder({…some static options here…})\n  .forTypeScript()\n  .withRabbitMQ('my-app-name')\n  .withHoneyBadger({…})\n  .withMongoDB()\n  .withRedis()\n  .use((app, config) =\u003e async (ctx, next) =\u003e {…before middleware…})\n  .useDefaults() // riviere, cors, etc.\n  .use((app, config) =\u003e async (ctx, next) =\u003e {…after middleware…})\n  .routes('./routes/my-routes')\n  .start(8080)\n```\n\nFor detailed usage please see the [documentation](https://workable.github.io/orka).\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fworkable%2Forka","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fworkable%2Forka","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fworkable%2Forka/lists"}