Creating Nabis Marketplace - The #1 cannabis wholesaling marketplace in California

theFreePress screenshot



Amazon Web Services (AWS)


Frontend Development

Backend & Infrastructure Development


Interested in learning more?

Send us a message 👋


Founded in 2018, Nabis is the #1 licensed cannabis wholesaling platform in California, supporting over 300 exclusive brands and supplying the entire network of state-licensed dispensaries with top-tier products. Nabis offers clients lightning-fast fulfillment, warehousing, payment processing, financing, data analytics, sales and marketing services to enable more brands and retailers to innovate, launch and scale.

Nabis identified a gap in the market when it came to connecting brands with retailers as the current methods were difficult. Inspired by other wholesale industries and delivery services like Amazon, Nabis dreamt up the Nabis Marketplace and partnered with Lazer to help build their dream into a reality.


As it stood, coordinating sales involved time-consuming levels of communication between brands and retailers. Retailers needed a streamlined process to track and submit orders, transparency behind product information, and access to a diverse product assortment in one platform. Brands needed a digital showroom to support the organic discoverability of their unique skus and reduce the amount of time for manual order entry for their team.


Building a robust component library Storybook

Our first plan of action was to build out the visually appealing UI that had been designed for the Nabis Marketplace. We built out a robust component library, incorporating the new, distinctive themes that characterized the experience they strived to create. To this end, we used React Storybook as a means of rapid prototyping and easily getting feedback from product management and stakeholders.

nabis ux image

Piecing components and integrations together for the frontend

Once we built out the individual components and connected the components to the respective data sources/integrations, we put together a complete first iteration of the web application's frontend, and then got to work building out the layers underneath that would support the new venture.

theFreePress screenshot

Piecing components and integrations together for the frontend

Even though many pieces of the Nabis Marketplace still relied greatly on existing Nabis infrastructure, we still needed to think through complicated backend design decisions that would support the new unique experiences presented.

This included such challenges as:

Determining how to display content on the user's home page that could be generated based on real-time usage of the Marketplace, in a fast and maintainable manner.
Building a layer of nested visibility rules so that brands could fully control how retailers viewed their products - based on Nabis' internal trust ratings, geographical location, etc.
Making it easy for users to get all the data needed to select products based on a complex selection of criteria.
Making the old sales systems integrate smoothly with new ones, while simultaneously making it clear which new purchase requests came from which.
Adding an easy way for Nabis to monetize front page advertisements for brands who want the extra visibility.
Making all of this feel like the same app and the same code as the existing Nabis codebase living alongside it.

Analyzing and improving

Once all of that difficult architecture work was done, we worked on improving how performant the application would be.

The needs and expectations of a more consumer-like web experience such as the Marketplace are almost completely different from those of Nabis' earlier logistics and distribution platform. And Lazer was tasked with figuring out how to bring those older systems in line with the new requirements.

nabis ux image

Implementing caching for a performant experience

One core avenue for improvement was extensively caching various commonly fetched data fields. Certain parts of the application were already integrated with Redis by this point, so we continued to use that storage method for any piece of data that was unlikely to change frequently for a given user, easily serialized, accessed frequently, or for large quantities of inputs at a time.

nabis ux image
nabis screenshot

Piecing components and integrations together for the frontend

To confirm our performance improvements, we looked at the stock quantity of a given product. Prior to Lazer, the Nabis team computed this value by heavily relying on third-party inventory management systems. They did this to improve the fidelity of warehouse tracking and make scaling storage size easier. However, determining this amount proved to be much more difficult and slow than before, transforming from a simple in-database computation to a series of network requests.

Thus, we made the decision after profiling the code to aggressively cache this value when seen in a display context, and to exclusively calculate it when used in a way that influenced the business logic (e.g. when actually buying a product). This served to greatly speed up the user's interactivity with the site while not compromising the logical correctness of the application.

The Result

As a result of all of the work we contributed, Nabis was able to successfully launch the Marketplace to all of their brands and retailers. The response to which has been overwhelmingly positive and they’ve grown to become the largest cannabis wholesaling marketplace in California.