I had the opportunity to sit down with Mark Watson and Dan Bucholtz to learn more about their newest app, PaperBox and how they use MongoDB.
Tell us a little bit about your company. What are you trying to accomplish? How do you see yourself growing in the next few years?
NXSW was started by two former colleagues and friends, Dan Bucholtz (based in Milwaukee, WI and the N in NXSW) and Mark Watson (based in Austin, TX and the SW in NXSW). With over 20 years experience in software development our goal is to build frustration-free solutions designed to make life at work better. We want to to create beautiful, easy-to-use cloud-based applications that make running your business easier and more cost-effective.
Tell us a little bit about PaperBox
PaperBox is a mobile document scanning and document management system. Take a photo of an important document and PaperBox will generate a searchable PDF, store it in your Dropbox account, and file it in your PaperBox account. Unlike our competitors all of your documents are stored in the cloud. You can access your documents from any device at any time.
All PDFs generated by PaperBox are stored in Dropbox. This makes it more cost-effective for our customers as they can use their existing accounts.
PaperBox also provides cloud-based searching and retrieval of these documents. This is driven by our backend built on MongoDB. We use MongoDB to securely store and search all document metadata, such as name, tags, and the text extracted from the document using OCR (all sensitive data is run through a secure hashing algorithm).
What were you using before MongoDB?
We have over 15 years of experience with relational databases, the majority of that being MySQL. We decided early on to develop PaperBox on the MEAN stack--MongoDB, Express.js, Angular.js and Node.js. We wanted to build something we thought was really useful, and we wanted to use the right tools for the job. We were amazed at how easy and fun it was to get up to speed with MongoDB. We delivered the first version of PaperBox for the web and iOS in less than 4 months while working less than 20 hours a week. Coming from a Java/MySQL background we found the development time savings with the MEAN stack, and MongoDB in particular, were huge. Refactoring the data model was a breeze, and accessing MongoDB from Node.js is a pleasure.
How did you hear about MongoDB? Why did you choose to use MongoDB instead of these other databases? What can you do now that you couldn’t do before.
We created PaperBox to provide a new way to scan, store, and search for your documents in the cloud. PaperBox is heavily centered around documents and document metadata. We knew early on that we needed to approach the problem in a new way. We are both software engineers with a passion for keeping up with the latest technologies, so we were well aware of MongoDB and other NoSQL databases. MongoDB provides a document-based schema that fit our data modeling requirements perfectly. We also had previous experience with and are big fans of AngularJS. Ultimately, we determined the MEAN stack was the right platform for PaperBox. We evaluated other databases briefly, but we felt like MongoDB rounded out the stack better. With a core focus on Javascript and JSON, integration was simple and painless.
Please describe your MongoDB deployment, your technology stack and the version of MongoDB that are you running.
The MongoDB deployment for PaperBox consists of a single replica set with three members located across two different geographical regions. Each member of the replica set is configured to use SSL. We are currently running MongoDB version 2.4.9.
PaperBox was built on the MEAN stack. On the client we have a native iOS app and an HTML5 app built with AngularJS and Bootstrap. On the server we run Nginx and Node.js with Express and Mongoose.
Are you using any tools to monitor, manage and backup your MongoDB deployment? If so what?
For backup we are using mongodump on our lower priority replica set members across two geographical locations. This provides us with a backup every 12 hours without putting strain on our high priority replica set member.
How are you measuring the impact of MongoDB on your business?
As a new startup our most important measurement is time to market. With MongoDB we believe there are two primary areas where we are seeing significant benefit in this regard:
Increased developer productivity. Creating new data models on the fly, refactoring data models, and excellent integration with Node.js are just a few of the reasons why we are seeing huge gains in development time.
Ease of deployment and operations. As a startup we don't have the resources to hire a full-time DevOps engineer. With MongoDB we don't have to. It's easy to deploy and operate, and we expect it to massively scale with minimal oversight.
Do you have plans to use MongoDB for other applications? If so, which ones?
Absolutely, we fully expect that MongoDB will be our database of choice moving forward. We are working on a new project with Go, mgo, and MongoDB, but we can't tell you what it is just yet...
What advice would you give someone who is considering using MongoDB for their next project?
Try it now! It's easy to start playing with MongoDB no matter what platform you are on. The MongoDB documentation is excellent. If you are new to NoSQL we highly recommend MongoDB. You will look at your data models in an entirely new and exciting way and see that operations are a breeze.