Register
Submit a solution
The challenge is finished.

Challenge Overview

Challenge objectives

  • Create an API using Node.js that will accept request from webhooks from both GitHub and Azure DevOps and will push the request body on a Kafka event queue.

  • Cover the API with unit and E2E testing.

Tech stack

  • Node.js

  • Apache Kafka

  • Azure DevOps

Code access

This is a new project and there is no existing repo/code base.

Detailed requirements

Our client RedWood uses Azure DevOps for issue tracking and we at Topcoder use Github so we need your help to create  a set of an event receiver and a processor that will keep Azure DevOps and Github in sync so each team can work on the tools they’re used to while we all stay on the same page.

 

You will find the Github to Azure mapping document attached on the challenge forum.

Architecture

This app will consist of the following two parts:

  • An event receiver which is an API that will accept requests from both GitHub and Azure DevOps and will push the payloads (request body) into a kafka queue under a specific topic.

  • A processor that will listen to the same topic, will pick up the events, will process the data and will call the appropriate APIs to keep GitHub and Azure DevOps in sync.

 

Only the event receiver is part of the scope of this challenge.

Message Payload

The payload should have the following format:

{

   originator: “One of github|azure”,

   data: {

      // The body of the incoming request

   }

}

Security

The API needs to be locked down so it knows the call came from either Github or Azure DevOps. This can be done by adding a secret key to the request. Ref:

Unit Testing

  • You need to cover the API with both unit and E2E tests.

  • Create both positive and negative test cases.

Notes

  • All settings must be configurable and well documented.

  • We’re only interested in events that are mentioned in the Github integration tech spec.pdf. All other events can be ignored.

  • After pushing the new message in the Kafka queue, the API should simply return a status 200 OK.

Deployment Guide

You need to create a detailed deployment guide (README.md) that covers:

  • System requirements/prerequisites

  • Configuration

  • Local setup instructions

  • Azure DevOps Webhook setup instructions

  • GitHub Repo Webhook setup instructions

  • Other? Feel free to add more details as needed.

Verification Document

Provide a document in Markdown format that explains how to test the API.

 

Feel free to post any questions on the challenge forum!

What to submit

Submit your source code in a zip file including the README.md and the verification document.



Final Submission Guidelines

Please read above

Review style

Final Review

Community Review Board

Approval

User Sign-Off

ID: 30098457