Building a Scalable, Secure, and Efficient System

Agritech Platform

A comprehensive Seed-to-Sale Cannabis ERP solution designed to streamline operations for businesses within the cannabis industry. It offers tools for regulatory compliance, sales enhancement, production efficiency, and inventory management. With features like regulatory software integration, dynamic demand alerts, and real-time inventory updates. It’s tailored for cultivators, manufacturers and vertically integrated businesses, promising visibility, control, and streamlined workflows across multiple sites and operations.
  • UX Audit
  • Task Flow Optimization
  • Navigational structure Redesign
  • Wireframing
  • Visual Design

The Engagement

Feature Gating Based on Pricing Plans

  • Plan Definition with Dynamic UI Rendering: Created multiple pricing plans (e.g., Basic, Pro, Enterprise), each offering a distinct set of features / limitations. Adjusted the UI dynamically to show or hide features based on the user's plan.

  • Feature Flags: Used feature flags to enable or disable features dynamically based on the user's plan. This was managed using a centralized feature flagging service.

RBAC (Role-Based Access Control)

  • Roles and Permissions

    Defined roles such as Admin (Tenant Owner), Manager, Team Member and Customer, each with specific permissions. Permissions were managed using a centralized policy engine.

  • UI Access

    Customized interfaces based on user roles, ensuring that users only see and interact with the features relevant to their responsibilities. This was achieved by dynamically rendering components based on the user's role.

  • Authentication and Authorization

    Implemented using JWT (JSON Web Tokens) and OAuth2 for secure authentication, and fine-grained access control.

Monorepo Structure

Frontend

Two Progressive Web Apps (PWAs) for user interaction, built with Vue and Nuxt for faster development and a better development experience.

Backend

Backend server built with Node.js and Express, leveraging GraphQL for flexible and efficient data querying, enabling more precise and efficient data retrieval.

Shared Component Library

Maintained a shared component library using Vue and Nuxt to promote code reuse, maintain consistency across both PWAs, and speed up the development process by providing pre-built, standardized components.

Server-less Functions

Data-heavy tasks to optimize performance and scalability. These functions handled tasks like data processing, reports, and task automations.

Apollo GraphQL API

Utilized with code generation to ensure type-safe queries and mutations across the frontend, enhancing developer productivity and reducing errors.

Integration

Government Compliant Body

  • Two-way Integration: Ensured real-time synchronization with the government body, facilitating compliance and inventory management. Implemented using REST APIs to sync data.

  • Inventory Audit: Automated highlighting of inconsistent data, improving data accuracy and compliance.

  • Task Dependencies: Implemented a dependency engine to link dependencies between tasks and resolve them once executed. Enabled users to perform multiple tasks, syncing them in a compliant order with the body.

Shipment Provider (On Fleet)

  • Two-way Integration: Provided seamless tracking of sales order shipments. Integrated using On Fleet's API, with real-time updates pushed to the frontend using WebSockets.

QuickBooks Integration

  • CSV Export: Facilitated easy generation of invoices for QuickBooks, streamlining financial operations.

Performance Improvements

Jobs Kanban Board

  • Two-way Integration: Achieved a 70% faster load time by optimizing database queries, implementing client-side caching, and using service workers for offline capabilities.

Real-time Reports

  • COGS (Cost of Goods Sold)

  • Top Performing Products

  • Sales Reports

  • Inventory Value Average Inventory Age

  • Others

Multi-Tenancy

Security

  • Data Isolation: Implemented a secure multi-tenant architecture ensuring no data leakage between tenants. Achieved using a combination of tenant-specific database schemas and logical
    data isolation in shared databases.

  • Document Sharing: Used signed URLs expiring after 1 minute for secure document sharing within tenants. Implemented using AWS S3 pre-signed URLs.

Compliance and Labeling

  • QR Codes Generation and Scanning

  • Barcodes Generation and Scanning

  • Compliance Labels

  • Inventory Value, Average Inventory Age
    Linked to COA reported by labs

  • DFS (Drug Fact Sheet)

When we were looking for a development partner to assist in the delivery of our redesigned SaaS product, Copods was recommended by a trusted advisor. Following a competitive tender process, Copods were selected and engaged. Copods have exceeded expectations around speed and quality of delivery. Being a design-led agency meant that their software development team not only delivered on our designs, but also contributed to its evolution by suggesting ways to improve the UI to make the customer experience better.

The team have been wonderful to work with, and have become an extension of our own team. We will continue to work with Copods into the next stage of our product development, but I also see us working together long into the future. I highly recommend the Copods team to any prospective client, anywhere in the world.