Vanilla Stack Labs Logo

Canna-Deals

Completed: July 2025

Homepage for Canna-Deals
Dispensary Display Page
Products Page
Individual Product Page
User Dashboard

About the Project

Overview

Canna-Deals is a high-speed data aggregator designed to track and compare retail pricing across the cannabis industry. Built on a decoupled architecture, it centralizes disparate inventory data into a unified interface, allowing users to find the best market value without the lag associated with traditional retail platforms.

The Challenge

The cannabis retail market is notoriously fragmented, with inventory and pricing changing by the hour. Most existing sites are heavy, slow, and difficult to navigate. The goal was to build a performant discovery engine that could scrape and normalize thousands of product listings and serve them instantly via a clean, lightweight API.

The Solution

The system is split into two halves: a robust data-ingestion pipeline and a fast, API-driven frontend. By using a decoupled approach, the platform ensures that data scraping and user browsing remain isolated, maintaining high performance even during heavy data updates.

Data Engineering Pipeline

  • Extraction: A custom Asynchronous Scraper built with Python that pulls raw pricing and inventory data from diverse retail sources.
  • Normalization: A processing layer that cleans and standardizes product categories, weights, and potency metrics, ensuring data consistency across the entire database.

Core Stack

  • Backend: Django serves as the primary application framework, managing the data models and core logic.
  • API Layer: Django REST Framework (DRF) serializes the data into optimized endpoints, acting as the bridge between the database and the frontend.
  • Frontend: A Vanilla JavaScript interface that consumes the DRF API. By avoiding heavy frameworks, the UI remains lightning-fast and easy to maintain.
  • Database: PostgreSQL handles storage and retrieval, using specific indexing to keep price and location queries under 100ms.

Engineering & Deployment

For reliability and consistent performance across environments, the entire application is containerized with Docker. This ensures that the scraping environment and the web server remain isolated and reproducible.

Key Technical Insights

  • Decoupled Architecture: Using DRF to separate the data from the UI allowed for a much cleaner development cycle and better performance tuning on the backend.
  • Vanilla Performance: By sticking to standard JS, HTML, and CSS, the frontend remains extremely lightweight, providing a near-instant experience for users on both mobile and desktop.
×

Get Your Free Consultation

Let's discuss your project and see how we can help bring your vision to life.

Free Consultation Let's discuss your project