Goodnotes Finds Marketplace Success Using MongoDB Atlas

In the fast-paced world of app development, creating a feature-rich digital marketplace that scales effectively can be challenging.

Goodnotes was founded in 2010 with the aim of replacing traditional paper notebooks with a digital alternative that reimagines the note-taking experience. Since then, the app has gone through several iterations and grown in popularity, now with more than 24 million monthly active users and 2.5 billion notes.

The team behind Goodnotes spoke at MongoDB.local Hong Kong in September 2024. They shared their journey of using MongoDB Atlas and MongoDB Atlas Search to build and run a comprehensive marketplace that expands the company’s offerings, catering to its growing number of content creators.

“At the beginning of 2023, we launched a pop-up shop, which was a very simple version of the marketplace, to test the water, and we realized it got really popular,” said Xing Dai, Principal Backend Engineer at Goodnotes.

The full Goodnotes Marketplace launched in August 2024 as a space where content creators can enhance their note-taking experience by purchasing additional content, such as planners, stickers, and textbooks.

Building a robust digital marketplace with MongoDB Atlas

“The first and the most difficult challenge [was] that we are a multiplatform app, and if you want to launch on multiple platforms, you need to support different app stores as well as [the] web,” said Dai.

Using MongoDB Atlas, Dai’s team created a fully configurable marketplace that would be accessible on different mobile and desktop platforms and the web.

The initial pop-up shop’s infrastructure consisted of a Payload content management system connected to a MongoDB database. However, building a full-fledged marketplace was more challenging.

The architecture needed to be scalable and include search, ordering, and customization capabilities.

“With [MongoDB] Atlas, it was really easy to add the in-app purchase and build the subscription infrastructure to manage the purchase workflow,” said Dai.

The Goodnotes team introduced NestJS—a JavaScript API framework—to build client APIs. It then developed a user-friendly portal for the operations team and for creators who want to upload new products.

Finally, the team built a full event-based data pipeline on top of MongoDB.

“What’s nice is that everything on the marketplace is actually configurable in the backend,” said Dai. “We don’t need to do anything other than configuring what we need to store in the database, and the iOS client will connect it to the backend.”

“When we want to extend the marketplace to other platforms, nothing needs to be changed,” Dai added. “We only need to configure different shops for different platforms.”

This means that Goodnotes can easily make its marketplace available on different app platforms, such as Apple and Android, and on the web.

Adding searches, charts, and soon AI

As Goodnotes added more products to its marketplace, users had difficulty finding what they wanted.

Despite having limited resources, the Goodnotes team endeavored to build a comprehensive search function.

Using MongoDB Atlas Search and MongoDB Atlas Triggers, the team built a search function that would generate the search view collection by-products and attributes, combining them into one collection. The team then added an Atlas Search index for the search field with an API exposing the search.

“We also added an auto-complete function, which is very similar to search, in the sense that we just had to create a function to generate aggregated collections, trigger it using [MongoDB] Atlas Triggers, and add the index and expose it in the marketplace,” said Dai.

The search function is now popular among marketplace users, making it quick and easy for them to find what they are looking for.

Goodnotes also regularly uses MongoDB Atlas Charts. For example, it creates charts showing how many products there are in the system over time.

One of the key next steps for Goodnotes involves using generative AI to translate product descriptions and content into different languages (the app is currently available in 11 languages).

The team also wants to introduce personalized recommendations for a more tailored experience for each user.

Ending the MongoDB.local presentation, Dai said: “MongoDB made it very fast and easy to build the whole marketplace and our search feature on top of the database using [MongoDB] Atlas Search. The solution scales, and so far we haven’t had any performance issues.”

Visit our product page to learn more about MongoDB Atlas.