At Grove, we are revolutionizing modern cannabis culture. As a cofounder, I'm excited to be part of the first app that unifies cannabis eCommerce, education, and content in one seamless platform. We’re creating a space where users can connect with experts, discover their ideal strains, and place orders for pickup or delivery from trusted local dispensaries. This is more than an app—it's a movement toward accessible and informed cannabis use, and we're just getting started!
This application is built using Embedded JavaScript (EJS) for the frontend, ExpressJS as the middleware, and MariaDB to manage the backend database and APIs. This stack allows for seamless communication between the user interface and the server, efficiently processing requests and delivering the necessary data without overloading the system. This thoughtful integration keeps the application fast and responsive, ensuring a smooth user experience as the dataset expands.
The features I implemented in the brands, retailers, and products sections are designed for efficient data handling, with keyword search functionality and custom pagination. As users enter search terms, the results dynamically update, shrinking the list as keywords refine the search. The pagination adapts to show the first and last pages, with ellipses in the middle for easier navigation through large datasets. To optimize performance, I ensured that data is only loaded upon search, preventing the system from being overwhelmed by larger datasets as they grow.
The associations page allows us to link creators with brands, retailers, and products seamlessly. The search functionality here mirrors that of the brands, retailers, and products sections, dynamically loading data upon request and refining results based on entered keywords. When searching for a creator, all past and newly saved associations appear, allowing for a comprehensive view of the creator's links within the ecosystem.
The schema driving this functionality leverages primary and foreign keys to establish these relationships efficiently. The GG_Creator_Association table includes a Creator_ID, Relation_ID, and ASS_TYPE, each serving a specific role. The primary key combines Creator_ID and Relation_ID, ensuring that each association is unique. Foreign keys reference the GG_Creators table, allowing cascading updates and deletions to maintain data integrity across associations. This structured approach ensures the system scales effectively as more associations are made, providing a solid foundation for managing creator relationships with brands, retailers, and products.
The Grove Tree, which I built using the D3.js zoomable sunburst visualization, is a dynamic representation of our vision for Grove. This structure, inspired by a design on our Miro board, leverages a JSON tree format to visually display the full scope of what Grove aims to encompass. Each sliver within the tree represents a category, and users can click through to dive deeper, revealing subcategories. In the future, we plan to integrate content tied to these categories, enabling creators to identify gaps and upload their own material where needed. Additionally, this tool will help us track user interest based on the content they engage with, offering valuable insights that can guide future developments and enhance the user experience.