Wednesday, 23 May, 2018 UTC


This piece is a part of our Customer Convos series. We’re sharing stories of how people use npm at work. Want to share your thoughts? Drop us a line.
Q: Hi! Can you state your name, what you do, and/or what your company does?
A: I’m Mark Voorberg, one of the co-founders at BinaryOps Software. We build custom business software using the latest tools and technologies.
How’s your day going?
So far, so good! The sun is shining, the birds are chirping, and I’m in my happy place working through some code for a customer.
Tell me the story of npm at your company. What specific problem did you have that npm solved?
We started using npm back as far as 2013 to install published packages in our first application prototype built with Node. Fast-forward a few years and we released a simple Grunt plugin on npm. After that we’ve decided to create an npm Organization and release a much larger project that includes multiple packages.
To people who are unsure what they could use npm for — how would you explain the use case?
npm is a great way to find and install reusable NodeJS packages or to publish your own. Packages can be public or private which means it’s not just for open source projects, but internal ones as well.
How’s the day to day experience of using npm?
npm has become part of our regular workflow, whether it’s searching for functionality that we don’t need to invent, looking up a package that we’ve used before, or simply publishing updates to one of our own packages.
Would you recommend that another org or company use npm and why?
In my mind, npm is the de-facto standard for package management on Node. Hosting packages anywhere else is an unnecessary risk that you can do without.
Any cool npm stuff your company has done publicly that you’d like to promote?
At the end of 2017, we published a project called TransomJS. It’s a collection of packages that allow us to create full-featured REST APIs with metadata. For example, there’s a Transom package that translates JSON metadata into Mongoose models. It creates the corresponding endpoints for common CRUD interactions and then some. Everything from audit fields, data type validations, mapped relationships, and querying are handled by the Transom-Mongoose package. Similar packages exist for Authentication, Websockets, SMTP messages, content templating etc. It’s a cool project and lets us move quickly, only having to write the parts of an app that make it unique, anything that can be abstracted away can be put into its own Transom module.