Skip to content

Shannon-Goddard/grow_filter

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

17 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

πŸ” Grow Filter - Interactive Cannabis Strain Search

Advanced Strain Filtering & Search Interface | 2,793+ Strains | Real-time Data Visualization

MIT License Live Demo JavaScript Bootstrap

πŸš€ Project Overview

Grow Filter is a powerful, interactive web application that transforms the comprehensive cannabis strain database into an intuitive, searchable, and filterable interface. Built with modern web technologies, it provides users with instant access to detailed information about 2,793+ cannabis strains through advanced filtering, sorting, and search capabilities.

✨ Key Features

  • πŸ” Real-time Search - Instant strain lookup with live filtering
  • πŸ“Š Advanced Filtering - Filter by strain type (Indica, Sativa, Hybrid)
  • πŸ”„ Dynamic Sorting - Click column headers to sort data
  • πŸ“± Responsive Design - Mobile-optimized interface
  • πŸ’‘ Detailed Views - Expandable strain information panels
  • ⚑ Fast Performance - Optimized for quick data access
  • 🎨 Modern UI - Clean, professional interface design

🌐 Live Demo

πŸš€ Try the Live Application

Demo Animation

πŸ› οΈ Technologies Used

Frontend Stack

  • HTML5 - Semantic markup and structure
  • CSS3 - Modern styling and responsive design
  • JavaScript ES6+ - Interactive functionality and data manipulation
  • jQuery - DOM manipulation and event handling
  • Bootstrap 4 - Responsive grid system and components
  • Font Awesome - Professional iconography

Data Integration

  • D3.js - Data visualization and manipulation
  • JSON/CSV - Structured data formats
  • AJAX - Asynchronous data loading

πŸ“Š Application Features

πŸ” Search & Filter Capabilities

Feature Description Implementation
Text Search Real-time strain name filtering Live input event handling
Type Filter Filter by Indica/Sativa/Hybrid Dropdown selection with instant results
Column Sorting Sort by any data column Click-to-sort with visual indicators
Responsive Table Mobile-optimized data display Bootstrap responsive tables

πŸ“‹ Data Display

// Sample strain data structure
{
  index: "0",
  strain: "Green Crack",
  THC: "Normal",
  CBD: "Very Low", 
  Indica: "Very Low",
  Sativa: "Normal",
  Hybrid: "Low",
  Grow: "8-9",
  logo: "strain-image-url",
  info: "Detailed strain information...",
  more_info: "Extended strain details..."
}

πŸ—οΈ Project Structure

grow_filter/
β”œβ”€β”€ static/
β”‚   β”œβ”€β”€ CSS/
β”‚   β”‚   └── style.css          # Custom styling and responsive design
β”‚   β”œβ”€β”€ js/
β”‚   β”‚   β”œβ”€β”€ app.js            # Main application logic
β”‚   β”‚   └── data.js           # Strain database (2,793+ records)
β”‚   └── images/
β”‚       β”œβ”€β”€ logo.jpg          # Application branding
β”‚       └── strain-images/    # Individual strain photos
β”œβ”€β”€ pics/
β”‚   β”œβ”€β”€ header.png           # README header image
β”‚   └── gif.gif             # Demo animation
β”œβ”€β”€ index.html              # Main application interface
β”œβ”€β”€ LICENSE                 # MIT License
└── README.md              # This documentation

πŸš€ Getting Started

Quick Start

  1. Clone the repository

    git clone https://github.com/Shannon-Goddard/grow_filter.git
    cd grow_filter
  2. Open locally

    # Serve with Python (recommended)
    python -m http.server 8000
    
    # Or simply open index.html in your browser
    open index.html
  3. Access the application

    http://localhost:8000
    

Development Setup

# No build process required - pure vanilla web technologies
# Just edit files and refresh browser

# For development server with live reload:
npx live-server

πŸ’» Usage Guide

πŸ” Search Functionality

// Real-time search implementation
input.addEventListener('keyup', function(event) {
  filterTable();
});

function filterTable() {
  let filter = input.value.toUpperCase();
  // Filter table rows based on search input
}

πŸ“Š Filtering Options

  1. Text Search: Type strain names in the search box
  2. Type Filter: Select from dropdown (ALL, Indica, Sativa, Hybrid)
  3. Column Sorting: Click any column header to sort
  4. Detailed View: Click "Show more info" for complete strain data

πŸ“± Mobile Experience

  • Responsive Navigation: Collapsible mobile menu
  • Touch-Friendly: Optimized button sizes and spacing
  • Fast Loading: Optimized for mobile networks
  • Swipe Support: Natural mobile interactions

⚑ Performance Optimizations

Current Optimizations

  • Client-side Filtering: Instant search results
  • Efficient DOM Manipulation: Minimal reflows and repaints
  • Lazy Loading: Images loaded on demand
  • Compressed Assets: Minified CSS and JavaScript

Planned Improvements

  • Virtual Scrolling: Handle large datasets efficiently
  • Service Workers: Offline functionality
  • Code Splitting: Reduce initial bundle size
  • CDN Integration: Faster global content delivery

🎯 Use Cases

πŸ‘₯ End Users

  • Strain Discovery: Find new strains based on preferences
  • Quick Reference: Access strain information instantly
  • Comparison Tool: Compare multiple strains side-by-side
  • Mobile Access: Search strains on-the-go

πŸ”¬ Researchers

  • Data Analysis: Filter strains by specific criteria
  • Pattern Recognition: Identify trends in strain characteristics
  • Export Functionality: Access filtered datasets
  • API Integration: Connect with research tools

πŸ’Ό Business Applications

  • Inventory Management: Track available strains
  • Customer Service: Quick strain lookup for staff
  • Product Catalog: Display strain information to customers
  • Market Analysis: Analyze strain popularity and trends

πŸ”§ Technical Implementation

Core Functionality

// Dynamic table population
function populateTable() {
  table.innerHTML = '';
  for (let data of tableData) {
    let row = table.insertRow(-1);
    // Populate row with strain data
  }
}

// Advanced filtering system
function myFunction() {
  var filter = input.value.toUpperCase();
  // Multi-column filtering logic
}

Data Processing Pipeline

  1. Data Loading: CSV β†’ JavaScript objects
  2. Table Generation: Dynamic HTML table creation
  3. Event Binding: Search and filter event handlers
  4. Real-time Updates: Instant UI updates on user input

πŸ”— Integration & APIs

Data Sources

  • Primary: Grow Data Repository
  • Format: CSV/JSON strain database
  • Updates: Synchronized with main database

Related Projects

  • GrowApp Cannabis Guide - Main cultivation platform
  • Grow Data - Source database
  • Grow Nutrients - Feeding schedule calculator
  • Grow Plant - Plant management tools

🀝 Contributing

We welcome contributions to enhance the filtering and search experience!

How to Contribute

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/enhancement)
  3. Commit your changes (git commit -m 'Add search enhancement')
  4. Push to the branch (git push origin feature/enhancement)
  5. Open a Pull Request

Areas for Contribution

  • πŸ” Search Enhancements - Advanced search algorithms
  • πŸ“Š Data Visualization - Charts and graphs
  • πŸ“± Mobile Optimization - Enhanced mobile experience
  • ⚑ Performance - Speed and efficiency improvements
  • 🎨 UI/UX - Design and usability enhancements

πŸ“ˆ Performance Metrics

Metric Current Target
Load Time ~8 seconds <3 seconds
Search Response <100ms <50ms
Mobile Score 85/100 95/100
Data Size 36,312 records Optimized

⚠️ Known Issues & Roadmap

Current Limitations

  • Load Time: Initial data loading takes ~8 seconds
  • Mobile Filtering: Some filter functions need mobile optimization
  • Data Updates: Manual synchronization with source database

Planned Improvements

  • Hard-coded Tables: Pre-render HTML for faster loading
  • Variable Optimization: Compress and abbreviate data variables
  • Code Condensation: Minimize JavaScript bundle size
  • Progressive Loading: Load data in chunks

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

License Summary

  • βœ… Commercial use allowed
  • βœ… Modification allowed
  • βœ… Distribution allowed
  • βœ… Private use allowed
  • ❗ License and copyright notice required

πŸ™ Acknowledgments

  • Cannabis Community - For strain knowledge and feedback
  • Open Source Libraries - Bootstrap, jQuery, Font Awesome
  • Wikileaf.com - Original data source for strain information
  • Web Development Community - For tools and best practices

πŸ“ž Contact & Support


Built with πŸ” for the cannabis cultivation community

Empowering growers with instant strain discovery

About

Interactive cannabis strain search and filtering interface. Real-time search through 2,793+ strains with advanced filtering, sorting, and mobile-responsive design. Built with vanilla JavaScript and Bootstrap. Check out a real world use case in the link below:

Topics

Resources

License

Code of conduct

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages