
Inspiration
Having started the fellowship in anticipation to work with Memorial Sloan Kettering Cancer Center (MSKCC), we wanted to incorporate a new technology that they use: NATS.
NATS is a connective technology built to provide secure communication across any cloud resources, as well as web and mobile devices. It is widely used by companies like VMWare, Tesla, Mastercard, and others. It is supported in over 40 languages and frameworks.
Our primary motivation was to build a project with NATS that will let us gain experience and further contribute to MSKCC's open-source endevors, such as SMILE and cBioPortal.
What it does
Our project re-creates a Publisher-Subscriber architecture where we use Golang to serve as a publisher, and JavaScript as a subscriber. Having built that, the publisher can send a message through the NATS server that runs in Docker and the subscriber will receive that message momentarily.
How we built it
We use a Publisher-Subscriber architecture. In particular, we used NATS frameworks for both Golang and JavaScript.

In this diagram, we can see that the publisher first sends the message to the NATS server that lives in a Docker Container. It exposes a certain port 4222 to which the publisher sends data and the subscriber receives it.
Challenges we ran into
As NATS is an advanced technology used by industry-leaders, we initially struggled with the concept of real-time messaging and connectivity in general.
Working with two programming like JavaScript and Goland we relied heavily on available resources and our MSKCC maintainers.
We were able to overcome many of those challenges by collaborating together over GitHub, as well as conducting code reviews to keep good standards and practices in use.
Accomplishments that we're proud of
We are proud of several accomplishments:
- As none of us have worked with Golang before, we learned a lot about that language in the last week and are hoping to use it during the fellowship to build reliable Back-End systems
- We also did not have any experience with NATS, which presented us with a big learning curve. We are proud to have overcome that.
What we learned
A good platform is always language agnostic. NATS is unique in the way it can be used in over 40 languages and frameworks, allowing for numerous potential projects.
What's next for NATS Streaming: Go + JavaScript
Build a Front-End system that shows the message received from the publisher. We hope to build a small-scale application that will then be a useful guide for MSKCC's SMILE dashboard project.
Log in or sign up for Devpost to join the conversation.