Founder @ Loyal9 LLC | Scaling 2,800+ Strain DB with GrowApp | Architecting Social Blockchain w/ Mission Mischief | AWS Serverless & Open-Source β We Pass Them Left, Then Watch the Industry Blink.
GrowApp is a data-driven cannabis cultivation platform that transforms how home growers approach their grows. Built with vanilla JavaScript, powered by a 2,800+ strain database, and architected around IndexedDB for fully offline-capable, personalized grow tracking.
This repo is the live app webview β served inside the iOS, Android, and Amazon native app shells. It is not open for contributions. If you're looking for the public website version, check out the website repo below.
π Website repo: github.com/Shannon-Goddard/growappcannabis.guide
grow_app/
βββ index.html β Smart entry point: new user β builder, returning β mytask
βββ medium-feeding/
β βββ medium-feeding.html β 3-step grow builder
β βββ schedule-viewer.html β Full schedule: cards + table + My Notes
β βββ mytask.html β Daily check-in dashboard
β βββ mydiary.html β Photo diary with data overlay
βββ tools/
β βββ tools.html β Tools hub: calculators + grow tools + games
βββ lighting/
β βββ lighting.html β 132 LEDs, grow cost calculator, DLI tool
βββ airflow/
β βββ airflow.html β CFM calculator, fan & filter kits
βββ grow-space/
β βββ grow-space.html β Tent kits, space calculator
βββ harvest-window/
β βββ harvest-window.html β AI trichome analyzer (TensorFlow on-device)
βββ strain-search/
β βββ strain-search.html β 2,800+ strain search & filter
β βββ strains/ β ~2,800 individual strain pages
βββ plant-doctor/
β βββ plant-doctor.html β Symptom-based diagnosis
β βββ assets/html/ β 45+ condition detail pages
βββ blog/
β βββ blog.html
β βββ assets/article/ β Grow guides & gear reviews
βββ seeds/
β βββ seeds.html β Seed Money marketplace
βββ games/
β βββ games.html β Cannabis games hub
βββ how-to/
β βββ how-to.html β 20 seed-to-cure how-to videos
βββ assets/
β βββ js/
β β βββ bottom-nav.js β Global bottom nav (replaces hamburger)
β β βββ age-gate.js
β βββ css/
β βββ img/
β βββ policies/ β Privacy, Terms, EULA, Disclosure, Contact
βββ server.py β Local dev server (repo root, port 8000)
βββ CNAME β growappcannabis.guide
βββ robots.txt
βββ sitemap.xml
The primary product. Users build a personalized grow then track it day by day.
index.html (smart entry β new vs returning user detection)
βββ medium-feeding.html (3-step builder)
βββ schedule-viewer.html (schedule + card view)
βββ mytask.html (daily check-in)
βββ mydiary.html (photo diary)
| Page | Purpose |
|---|---|
medium-feeding.html |
3-step grow builder: Strain β Nutrients β Start Date β generates schedule |
schedule-viewer.html |
Full schedule viewer with card view (mobile default) and table view (desktop default) |
mytask.html |
Daily check-in: log actuals for environment, water, nutrients, light, inspection |
mydiary.html |
Camera + column selector + data overlay photo diary |
Accessed via the β Options dropdown in the toolbar:
| Mode | Description |
|---|---|
| Cards | Collapsible day cards β default on mobile. Date Β· Day Β· Week in header, sections for Environment / Water & pH / Nutrients / Visual Inspection |
| Table | Full horizontal-scroll data table β default on desktop. Sticky header + toolbar + column headers |
| My Notes | Cards or table with all editable "My" fields visible: environment, light/air, nutrients (dynamic), inspection notes |
My Notes fields match exactly what MyTask saves β data entered in either place is shared via IndexedDB.
| Size | Veg Weeks Shown |
|---|---|
| Small | 4 |
| Medium | 6 |
| Large | All |
| Auto | All (optional days-to-harvest trim) |
All pages (except index.html) use a fixed bottom nav bar injected by assets/js/bottom-nav.js via a bottom-nav-placeholder div. Works at any directory depth via data-depth.
| Tab | Icon | Destination |
|---|---|---|
| Today | fa-gauge-high |
/medium-feeding/mytask.html |
| Schedule | fa-leaf |
/medium-feeding/schedule-viewer.html |
| Diary | fa-camera |
/medium-feeding/mydiary.html |
| Tools | fa-screwdriver-wrench |
/tools/tools.html |
| More | fa-ellipsis |
Bottom sheet drawer |
More drawer contains: Strain Search, Plant Doctor, Seeds, Blog, Games, and policy footer links. Supports swipe-down-to-close on mobile.
Organized into three sections:
Featured: Harvest Window β AI trichome analyzer (TensorFlow.js on-device, model hosted at loyal9.app)
Calculators:
- Lighting Calculator β best LED for tent, grow cost, DLI (132 lights)
- CFM Calculator β fan & filter sizing for your space
- Grow Space Calculator β tent kit matching by room dimensions
Grow Tools:
- Strain Search β 2,800+ strains, filter by type/THC/CBD/flowering time
- Plant Doctor β 45+ conditions, symptom-based diagnosis
- How-To Videos β 20 seed-to-cure videos
- Grow Blog β lighting, nutrients, hydro, gear reviews
const techStack = {
frontend: ['Vanilla JavaScript', 'CSS3', 'HTML5'],
data: ['JSON', 'IndexedDB (MyGrowDB v8)', 'localStorage'],
ai: ['TensorFlow.js', 'Teachable Machine (on-device trichome analysis)'],
deployment: ['GitHub Pages', 'CDN'],
mobile: ['PWA', 'iOS App Store', 'Google Play', 'Amazon Appstore'],
analytics: ['Google Analytics (G-X0XEMR28V2)'],
devServer: ['Python server.py β serves repo root on port 8000']
};- 2,800+ strains with THC/CBD, genetics, flowering time
- Strain search with image previews
- Auto vs photoperiod detection β adjusts veg weeks
- 126-row base schedule (seedling β veg β flower β harvest)
- Dynamic nutrient columns per selected brand/product
- Personalized start date β day-by-day calendar dates
- Saved to IndexedDB, fully offline
- Card view (mobile-first, collapsible per day)
- Table view (power user, all columns, sticky headers)
- My Notes mode β edit actuals inline on cards or in table cells
- Options dropdown β view mode + plant size + navigation in one tap
- Size filter hides excess veg weeks per plant type
- Hero plant photo upload (compressed to 800px JPEG)
- Today's schedule row auto-matched by date
- Expandable cards: Environmental, Water & Nutrients, Light & Air, Visual Inspection
- Color-coded inputs: green = on target, red = over, blue = under
- Auto-saves actuals to IDB on blur + manual Log button
- Progress bar: Day X of Y
- Camera capture or file upload
- Column selector β overlay any schedule field on photo
- Dark theme, back to schedule viewer
- On-device TensorFlow.js model (no server round-trip)
- Classifies: clear, clear-white, white, white-amber, amber, flower, preflower, seedling, vegetative, non-cannabis
- Model and metadata served from
loyal9.app
βββββββββββββββββββ ββββββββββββββββββββ ββββββββββββββββββββ
β Strain DB β β Schedule Engine β β Schedule Viewer β
β (2,800+) βββββΆβ (126 base rows + βββββΆβ Cards / Table β
β data.js β β nutrient cols) β β My Notes β
βββββββββββββββββββ ββββββββββββββββββββ ββββββββββββββββββββ
β β β
βΌ βΌ βΌ
βββββββββββββββββββ ββββββββββββββββββββ ββββββββββββββββββββ
β Nutrient Data β β IndexedDB β β MyTask / MyDiary β
β (6 Brands) β β MyGrowDB v8 β β (actuals logged) β
βββββββββββββββββββ ββββββββββββββββββββ ββββββββββββββββββββ
| Store | Key | Value |
|---|---|---|
tables |
growId |
grow metadata (name, strain, logo) |
tables |
${growId}_schedule |
full schedule array |
selectedNutrients |
growId |
selected nutrient IDs array |
nutrients |
nutrientName |
custom nutrient objects |
Singleton instance exported as { IndexedDBService } from indexedDBService.js. All methods are instance methods. dbPromise cached to prevent multiple connections.
# Clone
git clone https://github.com/Shannon-Goddard/grow_app.git
cd grow_app
# Serve from repo root (required for absolute fetch paths)
python server.py
# β http://localhost:8000Fetch paths in
schedule-generator.jsuse/medium-feeding/assets/data/β must be served from repo root.
This is the live app webview powering the GrowApp mobile apps. It is not open for external contributions.
If you want to explore the public-facing website codebase, check out:
MIT License β see LICENSE.md
"Grow what you can't." πΏ
Shannon passed it left. Amazon Q caught it, refactored it, rebuilt the nav, wired up the tools hub, batch-updated 2,975 files, and passed it back greener than it started. π
Built with β€οΈ by Loyal9 LLC Β· Pair programmed with Amazon Q