Initial commit
This commit is contained in:
@@ -0,0 +1,641 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Garden Calendar - The Dark Elite</title>
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||||
<style>
|
||||
:root { --bg:#060708; --border:rgba(80,90,100,0.2); --accent:#22d3ee; --text:#e5e7eb; --muted:#9ca3af; --indoor:#a78bfa; --direct:#22c55e; --transplant:#60a5fa; --harvest:#f59e0b; --maintain:#9ca3af; --plant:#ec4899; }
|
||||
*{box-sizing:border-box}
|
||||
body{margin:0;background:var(--bg);color:var(--text);font-family:system-ui,sans-serif;min-height:100vh}
|
||||
.container{max-width:1300px;margin:0 auto;padding:2rem}
|
||||
header{display:flex;justify-content:space-between;align-items:center;padding-bottom:1.5rem;border-bottom:1px solid var(--border);margin-bottom:1rem;flex-wrap:wrap;gap:1rem}
|
||||
header h1{margin:0;font-size:1.5rem;letter-spacing:0.2em;text-transform:uppercase;color:var(--accent);text-shadow:0 0 12px rgba(34,211,238,0.4)}
|
||||
header .sub{font-size:0.75rem;color:var(--muted);font-family:ui-monospace,monospace;margin-top:0.25rem}
|
||||
header a{color:var(--muted);text-decoration:none;font-size:0.85rem}
|
||||
header a:hover{color:var(--accent)}
|
||||
.legend{display:flex;gap:0.7rem;flex-wrap:wrap;padding:0.85rem 1rem;background:linear-gradient(135deg,rgba(18,20,24,0.7),rgba(10,11,13,0.85));border:1px solid var(--border);border-radius:6px;margin-bottom:1rem;font-size:0.75rem;font-family:ui-monospace,monospace}
|
||||
.legend span{display:flex;align-items:center;gap:0.3rem;text-transform:uppercase;letter-spacing:0.1em;color:var(--muted);cursor:pointer;padding:0.15rem 0.4rem;border-radius:3px;border:1px solid transparent}
|
||||
.legend span:hover{border-color:var(--border)}
|
||||
.legend span.off{opacity:0.35}
|
||||
.legend .dot{width:10px;height:10px;border-radius:50%}
|
||||
.month-nav{display:flex;gap:0.3rem;flex-wrap:wrap;margin-bottom:1.5rem}
|
||||
.month-nav a{flex:1;min-width:75px;text-align:center;background:rgba(18,20,24,0.9);border:1px solid var(--border);color:var(--text);padding:0.45rem;border-radius:4px;font-size:0.7rem;text-decoration:none;letter-spacing:0.1em;text-transform:uppercase;font-family:ui-monospace,monospace}
|
||||
.month-nav a:hover{border-color:var(--accent);color:var(--accent)}
|
||||
.month-nav a.current{border-color:var(--accent);background:rgba(34,211,238,0.1);color:var(--accent)}
|
||||
.month{background:linear-gradient(135deg,rgba(18,20,24,0.4),rgba(10,11,13,0.6));border:1px solid var(--border);border-radius:8px;padding:1.5rem;margin-bottom:1.25rem;scroll-margin-top:1rem}
|
||||
.month.current{border-color:rgba(34,211,238,0.45);box-shadow:0 0 22px rgba(34,211,238,0.1)}
|
||||
.month h2{margin:0 0 0.25rem 0;font-size:1.5rem;letter-spacing:0.2em;text-transform:uppercase;color:var(--accent);text-shadow:0 0 12px rgba(34,211,238,0.3)}
|
||||
.month .climate{font-size:0.7rem;color:var(--muted);font-family:ui-monospace,monospace;margin-bottom:1rem;letter-spacing:0.05em}
|
||||
.action-group{margin-top:1.25rem}
|
||||
.action-title{font-size:0.7rem;letter-spacing:0.25em;text-transform:uppercase;padding-left:0.65rem;border-left:3px solid;margin-bottom:0.65rem;font-weight:600}
|
||||
.action-title.indoor{color:var(--indoor);border-color:var(--indoor)}
|
||||
.action-title.direct{color:var(--direct);border-color:var(--direct)}
|
||||
.action-title.transplant{color:var(--transplant);border-color:var(--transplant)}
|
||||
.action-title.harvest{color:var(--harvest);border-color:var(--harvest)}
|
||||
.action-title.maintain{color:var(--maintain);border-color:var(--maintain)}
|
||||
.action-title.plant{color:var(--plant);border-color:var(--plant)}
|
||||
.plants{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:0.5rem}
|
||||
.plant{background:rgba(10,11,13,0.5);border:1px solid var(--border);border-left:3px solid;border-radius:4px;padding:0.55rem 0.8rem;font-size:0.85rem;transition:all 0.15s}
|
||||
.plant:hover{border-color:rgba(34,211,238,0.4);background:rgba(15,17,21,0.8)}
|
||||
.plant .name{color:var(--text);font-weight:500}
|
||||
.plant .note{color:var(--muted);font-size:0.72rem;margin-top:0.2rem;font-family:ui-monospace,monospace;letter-spacing:0.02em;line-height:1.4}
|
||||
.plant .cat-tag{display:inline-block;font-size:0.6rem;background:rgba(34,211,238,0.1);border:1px solid rgba(34,211,238,0.25);color:rgb(165,235,247);padding:0.05rem 0.35rem;border-radius:3px;margin-right:0.35rem;font-family:ui-monospace,monospace;text-transform:uppercase;letter-spacing:0.1em;vertical-align:middle}
|
||||
.plant.indoor{border-left-color:var(--indoor)}
|
||||
.plant.direct{border-left-color:var(--direct)}
|
||||
.plant.transplant{border-left-color:var(--transplant)}
|
||||
.plant.harvest{border-left-color:var(--harvest)}
|
||||
.plant.maintain{border-left-color:var(--maintain)}
|
||||
.plant.plant{border-left-color:var(--plant)}
|
||||
.controls{display:flex;gap:0.5rem;flex-wrap:wrap;margin-bottom:1rem}
|
||||
.controls select,.controls input{background:rgba(10,11,13,0.6);border:1px solid var(--border);color:var(--text);padding:0.45rem 0.8rem;border-radius:4px;font-size:0.8rem;font-family:ui-monospace,monospace}
|
||||
.controls select:focus,.controls input:focus{outline:none;border-color:var(--accent)}
|
||||
.empty{color:var(--muted);font-style:italic;font-size:0.85rem;padding:0.5rem 0}
|
||||
@media (max-width:768px){.plants{grid-template-columns:1fr}.month-nav a{min-width:50px;font-size:0.65rem}}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
<header>
|
||||
<div>
|
||||
<h1>Garden Calendar</h1>
|
||||
<div class="sub">Milford, TX // Zone 8b // North Central Texas // Last frost Mar 15 // First frost Nov 15</div>
|
||||
</div>
|
||||
<a href="/" style="color:#9ca3af;text-decoration:none;font-size:0.85rem">← Hub</a>
|
||||
</header>
|
||||
|
||||
<div class="controls">
|
||||
<select id="catFilter">
|
||||
<option value="">All Categories</option>
|
||||
<option value="veg">Vegetables</option>
|
||||
<option value="herb">Herbs</option>
|
||||
<option value="fruit">Fruits & Berries</option>
|
||||
</select>
|
||||
<input type="text" id="search" placeholder="Filter plants...">
|
||||
</div>
|
||||
|
||||
<div class="legend" id="legend">
|
||||
indoor<span class="dot" style="background:var(--indoor)"></span>Start Indoors</span>
|
||||
direct<span class="dot" style="background:var(--direct)"></span>Direct Sow</span>
|
||||
transplant<span class="dot" style="background:var(--transplant)"></span>Transplant</span>
|
||||
harvest<span class="dot" style="background:var(--harvest)"></span>Harvest</span>
|
||||
plant<span class="dot" style="background:var(--plant)"></span>Plant</span>
|
||||
maintain<span class="dot" style="background:var(--maintain)"></span>Maintain</span>
|
||||
</div>
|
||||
|
||||
<div class="month-nav" id="nav"></div>
|
||||
<div id="months"></div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
// veg / herb / fruit
|
||||
const CAL = {
|
||||
"January":{climate:"Avg 35-58°F. Dormant season. Last freeze ~Feb 5-Mar 1. Plan and order seeds.",actions:{
|
||||
indoor:[
|
||||
{n:"Onions (long-day & short-day)",c:"veg",note:"Start 10-12 weeks before last frost. Need 14+ hr daylight to bulb"},
|
||||
{n:"Leeks",c:"veg",note:"Start indoors now for spring transplant"},
|
||||
{n:"Celery",c:"veg",note:"Slow grower - start now, plant out March"},
|
||||
{n:"Perennial herbs (thyme, oregano, sage, chives)",c:"herb",note:"Start indoors under grow lights, 70°F soil"},
|
||||
{n:"Tomatoes (late month)",c:"veg",note:"6-8 weeks before transplant. Heat mat 75-80°F. 14 hr light"},
|
||||
{n:"Peppers (late month)",c:"veg",note:"8-10 weeks before transplant. Slowest germinator - bottom heat 80°F"},
|
||||
{n:"Eggplant (late month)",c:"veg",note:"8 weeks before transplant. Loves heat - 80°F bottom heat"}
|
||||
],
|
||||
direct:[
|
||||
{n:"English peas (late)",c:"veg",note:"Direct sow Jan 20-Mar 3. Soil temp 50°F. Inoculate seed. Trellis"},
|
||||
{n:"Spinach (late)",c:"veg",note:"Direct sow Jan 20-Mar 10. Cold tolerant. Bolts in heat - plant now"}
|
||||
],
|
||||
plant:[
|
||||
{n:"Asparagus crowns",c:"veg",note:"Plant Feb 1-Mar 1. 8-12\" deep trench. Long-term perennial - choose site carefully"},
|
||||
{n:"Bare root fruit trees (peach, plum, pear, apple)",c:"fruit",note:"Best planting window. Look for low-chill varieties (200-450 hr)"},
|
||||
{n:"Blackberries & raspberries (bare root)",c:"fruit",note:"Choose thornless varieties. Need trellis support"},
|
||||
{n:"Blueberries (Rabbiteye)",c:"fruit",note:"Acidic soil pH 4.5-5.5 - amend with sulfur. Plant 2+ varieties for pollination"},
|
||||
{n:"Grapes",c:"fruit",note:"Table or muscadine. Needs full sun, trellis, pruning"},
|
||||
{n:"Strawberries",c:"fruit",note:"Plant Jan-Feb. Crown at soil line. Mulch heavily"},
|
||||
{n:"Pecan trees",c:"fruit",note:"Pawnee, Caddo, Kanza work in N TX. Long taproot - dig deep"}
|
||||
],
|
||||
maintain:[
|
||||
{n:"Dormant prune peach/plum/apple/pear",c:"fruit",note:"Before bud break. Open center for peach/plum. Central leader for apple/pear"},
|
||||
{n:"Dormant prune grapes",c:"fruit",note:"Late Jan-early Feb. Spur or cane prune depending on variety"},
|
||||
{n:"Dormant oil spray on fruit trees",c:"fruit",note:"Smothers scale, mites, aphid eggs. Apply when temp >40°F for 24+ hr"},
|
||||
{n:"Plan garden layout",c:"veg",note:"Rotate crops! Don't plant nightshades where they were last year"}
|
||||
],
|
||||
harvest:[
|
||||
{n:"Winter greens (kale, collards, spinach)",c:"veg",note:"Pick outer leaves. Frost sweetens flavor"},
|
||||
{n:"Cabbage, Brussels sprouts",c:"veg",note:"Hardiest brassicas. Sprouts sweetest after frost"},
|
||||
{n:"Carrots, beets, turnips, radishes",c:"veg",note:"Mulch to prevent freeze damage if uncovered"},
|
||||
{n:"Persimmons (late season)",c:"fruit",note:"Asian non-astringent ripens late. American needs full ripening"},
|
||||
{n:"Pecans (continue cleanup)",c:"fruit",note:"Gather any remaining. Refrigerate or freeze"}
|
||||
]
|
||||
}},
|
||||
"February":{climate:"Avg 39-63°F. Late winter. Last freeze possible into early March. Soil warming.",actions:{
|
||||
indoor:[
|
||||
{n:"Tomatoes",c:"veg",note:"Prime starting time. 6-8 wk before last frost. Pot up at 4 true leaves"},
|
||||
{n:"Peppers (continue)",c:"veg",note:"Bottom heat critical. Slow germinator - be patient (14-21 days)"},
|
||||
{n:"Eggplant",c:"veg",note:"Start now for April transplant. Loves heat at every stage"},
|
||||
{n:"Broccoli, cabbage, cauliflower",c:"veg",note:"For fall crop? Skip - too late for spring brassicas from seed"},
|
||||
{n:"Basil (late month)",c:"herb",note:"Start indoors mid-Feb for April transplant. Won't tolerate frost"}
|
||||
],
|
||||
direct:[
|
||||
{n:"Onions (plants/sets)",c:"veg",note:"Jan 1-Feb 15. Plant 1\" deep, 4\" apart"},
|
||||
{n:"Onions (seed)",c:"veg",note:"Jan 1-Feb 15. Thin to 4\" later"},
|
||||
{n:"English peas",c:"veg",note:"Jan 20-Mar 3. Trellis. Bush varieties don't need support"},
|
||||
{n:"Spinach",c:"veg",note:"Jan 20-Mar 10. Direct sow only - hates transplant"},
|
||||
{n:"Irish potatoes",c:"veg",note:"Feb 1-Feb 15. Cut seed potatoes, cure 24 hr. Plant 4\" deep, hill as they grow"},
|
||||
{n:"Beets",c:"veg",note:"Feb 1-Feb 15. Soak seeds 24 hr first. Thin to 4\""},
|
||||
{n:"Carrots",c:"veg",note:"Feb 1-Feb 15. Loose soil 12\" deep. Keep moist until germination (2 wk)"},
|
||||
{n:"Swiss chard",c:"veg",note:"Feb 1-Mar 3. Heat tolerant - lasts into summer"},
|
||||
{n:"Cilantro",c:"veg",note:"Feb 1-Apr 1. Bolts in heat. Succession plant every 2-3 wk"},
|
||||
{n:"Collards, kale",c:"veg",note:"Feb 1-Mar 3. Cold hardy. Cut-and-come-again"},
|
||||
{n:"Lettuce (leaf, romaine, butter)",c:"veg",note:"Feb 1-Mar 31. Succession plant every 2 wk. Shade in late spring"},
|
||||
{n:"Kohlrabi",c:"veg",note:"Feb 1-Mar 10. Harvest at golf-ball size"},
|
||||
{n:"Mustard greens, turnips",c:"veg",note:"Feb 1-Mar 10. Fast crops - 30-40 days to harvest"},
|
||||
{n:"Parsley",c:"herb",note:"Feb 1-Mar 15. Direct sow only. Soak seeds 24 hr"},
|
||||
{n:"Radishes",c:"veg",note:"Feb 10-Apr 15. 25-day crop. Succession plant"},
|
||||
{n:"Dill",c:"herb",note:"Direct sow. Doesn't transplant. Self-seeds readily"}
|
||||
],
|
||||
transplant:[
|
||||
{n:"Broccoli, cabbage, cauliflower (from nursery)",c:"veg",note:"Feb 1-15. Hardened-off transplants only. Floating row cover for frost"},
|
||||
{n:"Brussels sprouts (from nursery)",c:"veg",note:"Feb 1-15. Need 90+ days to harvest"},
|
||||
{n:"Onion transplants",c:"veg",note:"Plant pencil-thick transplants. Don't water leaves"}
|
||||
],
|
||||
plant:[
|
||||
{n:"Asparagus crowns (final window)",c:"veg",note:"Feb 1-Mar 1. Hold off harvest 1-2 yr to build crown"},
|
||||
{n:"Fruit trees (last good window)",c:"fruit",note:"Plant bare root before bud break"},
|
||||
{n:"Figs",c:"fruit",note:"Brown Turkey, Celeste, LSU Purple. Very forgiving"},
|
||||
{n:"Pomegranates",c:"fruit",note:"Wonderful, Salavatski. Heat & drought tolerant"}
|
||||
],
|
||||
maintain:[
|
||||
{n:"Last dormant pruning window",c:"fruit",note:"Before bud break. Peaches especially"},
|
||||
{n:"Apply pre-emergent in garden borders",c:"maintain",note:"For weeds. NOT in vegetable beds"},
|
||||
{n:"Side-dress overwintered onions/garlic",c:"veg",note:"Light nitrogen feed (blood meal, fish emulsion)"}
|
||||
],
|
||||
harvest:[
|
||||
{n:"Last cool greens",c:"veg",note:"Before bolt. Spinach goes first when temps hit 70°F"},
|
||||
{n:"Carrots, beets, turnips, radishes",c:"veg",note:"Pull before they get woody"}
|
||||
]
|
||||
}},
|
||||
"March":{climate:"Avg 47-71°F. Last frost ~Mar 15. Spring planting in full swing. Soil warming fast.",actions:{
|
||||
indoor:[
|
||||
{n:"Basil",c:"herb",note:"Last call indoors. Transplant after soil hits 60°F"},
|
||||
{n:"Tomatoes (succession)",c:"veg",note:"For later harvest. Pot up to 1-gal containers"}
|
||||
],
|
||||
direct:[
|
||||
{n:"Beans, snap bush",c:"veg",note:"Mar 18-Apr 15. Soil 60°F+. Inoculant boosts yield"},
|
||||
{n:"Beans, snap pole",c:"veg",note:"Mar 18-Apr 15. Trellis 6-8' tall. More productive than bush"},
|
||||
{n:"Beans, lima bush & pole",c:"veg",note:"Mar 18-Apr 15. Soil must be 70°F+ - wait if cool"},
|
||||
{n:"Sweet corn",c:"veg",note:"Mar 18-Apr 30. Plant in blocks 4+ rows for pollination. Hill at 12\""},
|
||||
{n:"Cucumber",c:"veg",note:"Mar 18-Apr 30. Soil 60°F. Trellis vining types - cleaner fruit"},
|
||||
{n:"Summer squash, zucchini",c:"veg",note:"Mar 25-Apr 15. Plant hills. Watch for squash bugs starting late spring"},
|
||||
{n:"Winter squash",c:"veg",note:"Mar 25-Apr 15. Needs 85-100 days. Vining - give space"},
|
||||
{n:"Watermelon, cantaloupe",c:"veg",note:"Mar 25-Apr 30. Soil 70°F+. Vining - 8-12' between hills"},
|
||||
{n:"Pumpkin",c:"veg",note:"Mar 25-Apr 25. For Halloween harvest"},
|
||||
{n:"Radish, lettuce (last spring sow)",c:"veg",note:"Heat-tolerant varieties only at this point"}
|
||||
],
|
||||
transplant:[
|
||||
{n:"Tomatoes (after Mar 15)",c:"veg",note:"Mar 20-Apr 30. Bury deep - root from buried stem. Cage at planting"},
|
||||
{n:"Peppers (late month)",c:"veg",note:"Wait until nights stay above 55°F. Mulch black plastic for heat"},
|
||||
{n:"Eggplant (late month)",c:"veg",note:"Apr 1-30. Mulch with black plastic"}
|
||||
],
|
||||
plant:[
|
||||
{n:"Sweet potato slips (late month)",c:"veg",note:"Apr 15-Jun 1. Bury slips horizontally, leaves above soil"}
|
||||
],
|
||||
maintain:[
|
||||
{n:"Mulch heavily (3-4 inches)",c:"maintain",note:"Wood chips, straw, leaves. Conserves water, suppresses weeds, regulates temp"},
|
||||
{n:"Drip irrigation install",c:"maintain",note:"Saves 50%+ water vs sprinklers. Critical for hot summer"},
|
||||
{n:"Side-dress brassicas with nitrogen",c:"veg",note:"Heavy feeders - blood meal or fish emulsion"},
|
||||
{n:"Fruit tree spring spray",c:"fruit",note:"Copper fungicide at pink bud. Avoid spraying open flowers"}
|
||||
],
|
||||
harvest:[
|
||||
{n:"Spring lettuce, spinach, mustard",c:"veg",note:"Pick early morning for crispness"},
|
||||
{n:"Radishes (continuous)",c:"veg",note:"25-30 day crop. Harvest before they split"},
|
||||
{n:"English peas (late month)",c:"veg",note:"Pick when pods full but tender. Daily picking keeps producing"},
|
||||
{n:"Asparagus (year 3+)",c:"veg",note:"Snap at base when 8\" tall. 6-8 wk season then stop"},
|
||||
{n:"Strawberries (late month)",c:"fruit",note:"Pick fully red. Don't pull - snap stem above berry"}
|
||||
]
|
||||
}},
|
||||
"April":{climate:"Avg 56-78°F. Warm season planting peak. Last realistic frost passed. Soil 65-75°F.",actions:{
|
||||
direct:[
|
||||
{n:"Okra",c:"veg",note:"Apr 1-30. Soak seeds 24 hr. Soil must be 75°F+. Heat loving"},
|
||||
{n:"Southern peas (black-eyed, crowder, purple hull)",c:"veg",note:"Mar 30-Apr 30. Heat & drought tolerant. Nitrogen fixer"},
|
||||
{n:"Peppers",c:"veg",note:"Mar 30-May 30. Direct sow OR transplant"},
|
||||
{n:"Continue beans, corn, squash, cucumber, melons",c:"veg",note:"Last good window for spring planting"},
|
||||
{n:"Eggplant seed",c:"veg",note:"Apr 1-30. Or transplant - faster"}
|
||||
],
|
||||
transplant:[
|
||||
{n:"Sweet potato slips",c:"veg",note:"Apr 15-Jun 1. Plant horizontally, only leaves above soil. 100+ days to harvest"},
|
||||
{n:"Pepper transplants (peak window)",c:"veg",note:"Mar 30-May 30. Mulch heavily. Stake taller varieties"},
|
||||
{n:"Eggplant transplants",c:"veg",note:"Apr 1-30. Black plastic mulch boosts production"},
|
||||
{n:"Late tomato transplants",c:"veg",note:"For staggered harvest"},
|
||||
{n:"Basil",c:"herb",note:"Soil 60°F+ minimum. Pinch tops to bush out"}
|
||||
],
|
||||
plant:[
|
||||
{n:"Citrus (cold-hardy)",c:"fruit",note:"Satsuma, Meyer lemon, kumquat. Plant when freeze risk passed. South-facing wall best"}
|
||||
],
|
||||
maintain:[
|
||||
{n:"Begin pest scouting",c:"maintain",note:"Aphids, cabbage worms, flea beetles, cucumber beetles. Hand-pick first"},
|
||||
{n:"Side-dress tomatoes when first flowers appear",c:"veg",note:"Calcium important - prevents blossom end rot. Crushed eggshells or gypsum"},
|
||||
{n:"Thin seedlings ruthlessly",c:"veg",note:"Overcrowded plants compete = small yield"},
|
||||
{n:"Stake/cage tomatoes early",c:"veg",note:"Easier than after they sprawl"}
|
||||
],
|
||||
harvest:[
|
||||
{n:"Lettuce, spinach (final harvest)",c:"veg",note:"Heat is here - bolting starts. Pull before bitter"},
|
||||
{n:"Broccoli, cabbage, cauliflower",c:"veg",note:"Cut main head, side shoots continue 2-4 wk for broccoli"},
|
||||
{n:"Beets, carrots, turnips",c:"veg",note:"Last chance before heat makes them woody"},
|
||||
{n:"English peas (peak)",c:"veg",note:"Pick daily. Production drops when temps hit 80°F"},
|
||||
{n:"Strawberries (peak)",c:"fruit",note:"Daily picking through April-May"},
|
||||
{n:"Cilantro before bolt",c:"herb",note:"Collect seeds (coriander) when plant bolts"}
|
||||
]
|
||||
}},
|
||||
"May":{climate:"Avg 65-85°F. Heat ramping. Last warm-season planting window. Water demands rising.",actions:{
|
||||
direct:[
|
||||
{n:"Okra (continue)",c:"veg",note:"Plants love May heat. Cut pods at 3-4\" - bigger = woody"},
|
||||
{n:"Southern peas",c:"veg",note:"Continue planting. Heat tolerant"},
|
||||
{n:"Pumpkins for Halloween",c:"veg",note:"Apr 15-Jun 1. 100+ days. Plant by Jun 1 for late Oct harvest"},
|
||||
{n:"Cantaloupe (last call)",c:"veg",note:"Apr 15-Jun 1. After this it's too late before heat"}
|
||||
],
|
||||
transplant:[
|
||||
{n:"Sweet potato slips (peak window)",c:"veg",note:"Apr 15-Jun 1. Plant evening to reduce shock"},
|
||||
{n:"Late peppers, eggplant",c:"veg",note:"Last chance before extreme heat"}
|
||||
],
|
||||
maintain:[
|
||||
{n:"Deep water 1-2x weekly (1\" total)",c:"maintain",note:"Better than daily shallow. Encourages deep roots"},
|
||||
{n:"Top off mulch to 4\"",c:"maintain",note:"Critical for summer survival. Hot soil kills roots"},
|
||||
{n:"Side-dress tomatoes again",c:"veg",note:"Fertilize after first fruit sets, then monthly"},
|
||||
{n:"Sucker tomatoes (indeterminate types)",c:"veg",note:"Remove side shoots from leaf axils to focus energy"},
|
||||
{n:"Watch for squash bugs, spider mites, hornworms",c:"maintain",note:"Hand-pick early. Spinosad for caterpillars"}
|
||||
],
|
||||
harvest:[
|
||||
{n:"Garlic",c:"veg",note:"When lower leaves brown - usually mid-May. Cure 2 wk in shade"},
|
||||
{n:"Onions",c:"veg",note:"When tops fall over. Cure 2 wk in shade with tops attached"},
|
||||
{n:"Last spring greens",c:"veg",note:"Most cool crops finished"},
|
||||
{n:"Snap peas, English peas (last)",c:"veg",note:"Before heat ruins quality"},
|
||||
{n:"Early tomatoes (late month)",c:"veg",note:"First fruits ripening. Pick at first blush, ripen on counter"},
|
||||
{n:"Summer squash, zucchini",c:"veg",note:"Pick small (6-8\") for tender. Daily picking keeps producing"},
|
||||
{n:"Cucumber (early)",c:"veg",note:"Pick small. Skipping a day = baseball bat"},
|
||||
{n:"Beans (snap bush)",c:"veg",note:"Pick every 2-3 days for tender pods"},
|
||||
{n:"Strawberries (winding down)",c:"fruit",note:"Final harvest before plants rest in heat"},
|
||||
{n:"Blackberries (early varieties)",c:"fruit",note:"Pick when dull-looking, not shiny. Daily"}
|
||||
]
|
||||
}},
|
||||
"June":{climate:"Avg 73-92°F. Summer arrives. Tomato heat-stop approaching. Water critical.",actions:{
|
||||
indoor:[
|
||||
{n:"Fall tomato starts (late month)",c:"veg",note:"Start indoors for August transplant. Heat-set varieties: Heatmaster, Solar Fire, Phoenix"},
|
||||
{n:"Fall pepper starts",c:"veg",note:"Late June for August transplant"}
|
||||
],
|
||||
direct:[
|
||||
{n:"Okra (last main window)",c:"veg",note:"Heat-loving. Daily picking at 3-4\" pods"},
|
||||
{n:"Southern peas",c:"veg",note:"Drought tolerant - good summer crop"},
|
||||
{n:"Watermelon (last window)",c:"veg",note:"For early Sept harvest"}
|
||||
],
|
||||
maintain:[
|
||||
{n:"WATER DEEPLY",c:"maintain",note:"1-2\" weekly minimum. Mornings best - reduces fungal disease"},
|
||||
{n:"Shade cloth on lettuce/cool crops",c:"maintain",note:"30-50% shade extends spring crops a few weeks"},
|
||||
{n:"Watch for tomato blossom drop",c:"veg",note:"Stops setting fruit above 90°F. Normal - rest period coming"},
|
||||
{n:"Spider mite check on tomatoes",c:"maintain",note:"Tiny webs under leaves. Blast with water, neem oil"},
|
||||
{n:"Pull spent spring crops",c:"maintain",note:"Cover crops or solarize empty beds for summer"},
|
||||
{n:"Fertilize peppers, eggplant, okra",c:"veg",note:"Heavy feeders during fruiting"}
|
||||
],
|
||||
harvest:[
|
||||
{n:"Tomatoes (peak through early July)",c:"veg",note:"Pick at first blush. Heat stops fruit set above 92°F"},
|
||||
{n:"Peppers (continuous)",c:"veg",note:"Pick green or let ripen to red/yellow for more flavor"},
|
||||
{n:"Summer squash, zucchini",c:"veg",note:"Daily. Don't let monsters grow"},
|
||||
{n:"Cucumbers (peak)",c:"veg",note:"Daily. Slicers and picklers different harvest sizes"},
|
||||
{n:"Beans",c:"veg",note:"Continuous. Don't let pods go to seed - production stops"},
|
||||
{n:"Eggplant",c:"veg",note:"When skin shiny, slight finger pressure rebounds"},
|
||||
{n:"Okra (peak start)",c:"veg",note:"Every other day. Heavy production through August"},
|
||||
{n:"Blackberries",c:"fruit",note:"Peak. Dull black = ripe. Refrigerate immediately"},
|
||||
{n:"Peaches (early varieties)",c:"fruit",note:"June - early August depending on variety"},
|
||||
{n:"Plums",c:"fruit",note:"Methley, Morris ripen June. Pick when slight give"},
|
||||
{n:"Blueberries",c:"fruit",note:"Tifblue, Climax peak. Pick when fully blue with grayish bloom"},
|
||||
{n:"Mulberries",c:"fruit",note:"Pick from ground or shake into tarp"}
|
||||
]
|
||||
}},
|
||||
"July":{climate:"Avg 77-96°F. Brutal heat. Tomato fruit set stops above 92°F. Survival mode.",actions:{
|
||||
indoor:[
|
||||
{n:"Fall tomatoes (must start now)",c:"veg",note:"Started indoors early-mid July for late July transplant. Heat-set varieties"},
|
||||
{n:"Fall peppers, eggplant",c:"veg",note:"For August transplant. Same heat-set considerations"},
|
||||
{n:"Brassicas for fall (late month)",c:"veg",note:"Broccoli, cabbage, cauliflower, Brussels sprouts. Start indoors under shade"}
|
||||
],
|
||||
direct:[
|
||||
{n:"Okra (continue)",c:"veg",note:"Loves this. Peak production"},
|
||||
{n:"Southern peas",c:"veg",note:"Continue. Nitrogen fixers, will improve soil"},
|
||||
{n:"Pumpkins for Halloween (last call)",c:"veg",note:"Need 90-100 days - cutting it close"}
|
||||
],
|
||||
transplant:[
|
||||
{n:"Tomato transplants for fall (late month)",c:"veg",note:"Jun 15-Jul 30. Shade transplants first week. Heat-tolerant varieties"}
|
||||
],
|
||||
maintain:[
|
||||
{n:"WATER WATER WATER",c:"maintain",note:"Deep watering 2-3x/wk. Mulch maintenance"},
|
||||
{n:"Solarize empty beds",c:"maintain",note:"Clear plastic 4-6 wk kills weeds, nematodes, pathogens"},
|
||||
{n:"Cover crops in resting beds",c:"maintain",note:"Cowpeas, buckwheat. Will be tilled in for nitrogen/organic matter"},
|
||||
{n:"Plant nematode-resistant cover crops",c:"maintain",note:"Sunn hemp, marigolds break pest cycles"},
|
||||
{n:"Shade newly planted fall crops",c:"maintain",note:"30-50% shade for first 2-3 wk"},
|
||||
{n:"Continue tomato sucker removal",c:"veg",note:"Reduces foliar disease in heat"},
|
||||
{n:"Watch for whiteflies, thrips, hornworms",c:"maintain",note:"Peak pest season"}
|
||||
],
|
||||
harvest:[
|
||||
{n:"Tomatoes (until heat stops fruiting)",c:"veg",note:"Once heat-set ends, prune back hard - regrowth for fall"},
|
||||
{n:"Peppers (continuous)",c:"veg",note:"Hot peppers thrive. Bells slow but still produce"},
|
||||
{n:"Okra (PEAK)",c:"veg",note:"Daily picking. Two cuts/day in extreme heat"},
|
||||
{n:"Southern peas",c:"veg",note:"Shell or eat whole young"},
|
||||
{n:"Eggplant",c:"veg",note:"Peak production"},
|
||||
{n:"Melons, watermelon",c:"veg",note:"Thump for hollow sound. Tendril nearest fruit browns when ripe"},
|
||||
{n:"Peaches",c:"fruit",note:"Most varieties peak. Pick when slight give, fragrant"},
|
||||
{n:"Plums (continue)",c:"fruit",note:"Various varieties ripen through July"},
|
||||
{n:"Blackberries (winding down)",c:"fruit",note:"Final harvest most varieties"},
|
||||
{n:"Figs (Brown Turkey early)",c:"fruit",note:"When fully drooping. Pick early morning"}
|
||||
]
|
||||
}},
|
||||
"August":{climate:"Avg 76-96°F. Heat continues. Fall planting begins. Critical month for fall garden.",actions:{
|
||||
indoor:[
|
||||
{n:"Broccoli, cabbage, cauliflower, Brussels sprouts",c:"veg",note:"Start indoors under shade for Sept transplant. Or buy starts"},
|
||||
{n:"Fall lettuce (late month)",c:"veg",note:"Start indoors with cool ground"}
|
||||
],
|
||||
direct:[
|
||||
{n:"Beans, snap bush",c:"veg",note:"Aug 1-Sep 15. Fall crop - 60 days to harvest"},
|
||||
{n:"Beans, snap pole, lima",c:"veg",note:"Aug 1-Sep 15. Quick varieties only"},
|
||||
{n:"Beets, carrots",c:"veg",note:"Aug 15-Sep 30. Soil cooling - germination better"},
|
||||
{n:"Broccoli, cabbage, cauliflower SEED",c:"veg",note:"Aug 15-Sep 30. Direct sow or start indoors"},
|
||||
{n:"Brussels sprouts seed",c:"veg",note:"Aug 15-Sep 30. Long season - start early"},
|
||||
{n:"Swiss chard",c:"veg",note:"Aug 15-Sep 15. Cuts through winter"},
|
||||
{n:"Collards, kale",c:"veg",note:"Aug 25-Sep 20. Frost makes them sweeter"},
|
||||
{n:"Cucumber (fall crop)",c:"veg",note:"Aug 25-Sep 10. Pickling varieties faster"},
|
||||
{n:"Summer squash, zucchini",c:"veg",note:"Aug 1-Aug 30. Last warm-season planting"},
|
||||
{n:"Winter squash",c:"veg",note:"Aug 10-Aug 30. Cutting it close - choose 80-day varieties"},
|
||||
{n:"Cilantro",c:"herb",note:"Aug-Sep. Cool weather return - thrives until winter"},
|
||||
{n:"Dill",c:"herb",note:"Fall crop. Self-seeds for spring"}
|
||||
],
|
||||
transplant:[
|
||||
{n:"Tomatoes for fall (PEAK window)",c:"veg",note:"Aug 1-15. Shade first week. Heat-set varieties critical"},
|
||||
{n:"Peppers (fall)",c:"veg",note:"Aug 1-Oct 1. Will produce well into fall"},
|
||||
{n:"Eggplant (fall)",c:"veg",note:"Aug 1-Oct 15"}
|
||||
],
|
||||
maintain:[
|
||||
{n:"Shade cloth on transplants",c:"maintain",note:"30-50% shade for first 2 wk on fall transplants"},
|
||||
{n:"Water new plantings daily",c:"maintain",note:"Until established (~2 wk), then deep watering 2-3x/wk"},
|
||||
{n:"Cut back tomato plants",c:"veg",note:"Hard prune existing tomato plants - regrowth = fall harvest"},
|
||||
{n:"Soil prep with compost",c:"maintain",note:"Replenish before fall planting"}
|
||||
],
|
||||
harvest:[
|
||||
{n:"Okra (peak continues)",c:"veg",note:"Daily"},
|
||||
{n:"Southern peas",c:"veg",note:"Continuous"},
|
||||
{n:"Peppers",c:"veg",note:"Pick or let ripen"},
|
||||
{n:"Eggplant",c:"veg",note:"Peak through Sept"},
|
||||
{n:"Melons (final)",c:"veg",note:"Last of summer melons"},
|
||||
{n:"Tomatoes (final summer harvest)",c:"veg",note:"Heat-stressed fruit"},
|
||||
{n:"Sweet potatoes (test dig)",c:"veg",note:"Can start digging late month for early eats"},
|
||||
{n:"Figs (peak)",c:"fruit",note:"Daily picking. Birds will compete"},
|
||||
{n:"Pears (Asian and European)",c:"fruit",note:"Asian: ripe on tree. European: pick green, ripen in fridge"}
|
||||
]
|
||||
}},
|
||||
"September":{climate:"Avg 70-89°F. Cooling begins. Major fall planting month. Soil still warm.",actions:{
|
||||
direct:[
|
||||
{n:"Beets",c:"veg",note:"Sep 1-Oct 1. Excellent fall crop. Both roots and greens"},
|
||||
{n:"Carrots",c:"veg",note:"Sep 1-Sep 30. Fall sweetness much better than spring"},
|
||||
{n:"Broccoli, cabbage, cauliflower (seed)",c:"veg",note:"Sep 1-30. Best fall crop - won't bolt"},
|
||||
{n:"Brussels sprouts (seed)",c:"veg",note:"Aug 15-Sep 30. Frost sweetens. Best fall crop"},
|
||||
{n:"Chinese cabbage, bok choy",c:"veg",note:"Aug 10-30. Quick crop. Cool weather thrives"},
|
||||
{n:"Kale, collards (peak)",c:"veg",note:"Best planting time"},
|
||||
{n:"Kohlrabi",c:"veg",note:"Aug 15-Sep 20. Quick fall crop"},
|
||||
{n:"Lettuce (all types)",c:"veg",note:"Sep 1-30. Cool weather = peak quality"},
|
||||
{n:"Mustard greens",c:"veg",note:"Aug 25-Sep 20. Cuts through frost"},
|
||||
{n:"Onions (seed for transplants)",c:"veg",note:"Sep 1-20. For winter transplant"},
|
||||
{n:"Parsley",c:"herb",note:"Aug 15-Oct 10. Cold-hardy through winter"},
|
||||
{n:"English peas",c:"veg",note:"Sep 15-Nov 1. Fall crop - quick before frost"},
|
||||
{n:"Radishes",c:"veg",note:"Sep 20-Nov 15. Quick 25-30 day crop"},
|
||||
{n:"Spinach",c:"veg",note:"Sep 15-Nov 1. Best fall planting time - germination good now"},
|
||||
{n:"Swiss chard",c:"veg",note:"Continues from August. Will overwinter"},
|
||||
{n:"Turnips (both roots and greens)",c:"veg",note:"Aug 25-Nov 1. Quick crops both"},
|
||||
{n:"Cilantro (heavy)",c:"herb",note:"Peak fall planting - will produce through spring"}
|
||||
],
|
||||
transplant:[
|
||||
{n:"Broccoli, cabbage, cauliflower starts",c:"veg",note:"Sep 1-Oct 15. Best transplant window"},
|
||||
{n:"Brussels sprouts starts",c:"veg",note:"Sep 1-30. Needs longest season"},
|
||||
{n:"Continue tomatoes for late fall",c:"veg",note:"Last realistic window"},
|
||||
{n:"Lettuce transplants",c:"veg",note:"Faster to harvest than seed"}
|
||||
],
|
||||
plant:[
|
||||
{n:"Garlic (late month)",c:"veg",note:"Sep 1-Nov 1. Plant cloves pointed end up, 2\" deep. Harvest May"},
|
||||
{n:"Strawberry crowns",c:"fruit",note:"Sep-Oct. Mulch heavily for winter"}
|
||||
],
|
||||
maintain:[
|
||||
{n:"Resume regular watering schedule",c:"maintain",note:"Cooler temps = less stress. Adjust based on rainfall"},
|
||||
{n:"Compost summer plant debris",c:"maintain",note:"Hot compost only - cool pile can spread disease"},
|
||||
{n:"Cover crops on resting beds",c:"maintain",note:"Crimson clover, vetch fix nitrogen overwinter"}
|
||||
],
|
||||
harvest:[
|
||||
{n:"Sweet potatoes (peak)",c:"veg",note:"Dig before first frost. Cure 1-2 wk at 80°F+ for storage"},
|
||||
{n:"Okra (winding down)",c:"veg",note:"Production drops as cool nights begin"},
|
||||
{n:"Southern peas (final)",c:"veg",note:"Shell remaining for storage"},
|
||||
{n:"Late summer tomatoes",c:"veg",note:"From August replants"},
|
||||
{n:"Peppers (continuous)",c:"veg",note:"Production increases as heat breaks"},
|
||||
{n:"Eggplant",c:"veg",note:"Continuing well"},
|
||||
{n:"Apples (early varieties)",c:"fruit",note:"Anna, Dorsett Golden. Low-chill varieties"},
|
||||
{n:"Pears continuing",c:"fruit",note:"Most varieties ripen Aug-Sept"},
|
||||
{n:"Pomegranates",c:"fruit",note:"Late month. Pick when 'metallic' sound when tapped"}
|
||||
]
|
||||
}},
|
||||
"October":{climate:"Avg 61-80°F. Beautiful weather. Fall garden peak. First frost still ~6 weeks away.",actions:{
|
||||
direct:[
|
||||
{n:"Garlic (peak planting time)",c:"veg",note:"Oct 1-Nov 1. Plant individual cloves. Mulch heavily. Harvest May-June"},
|
||||
{n:"Asian greens (bok choy, tatsoi, mizuna)",c:"veg",note:"Quick fall crops"},
|
||||
{n:"Spinach (continuous)",c:"veg",note:"Will overwinter in mild winters"},
|
||||
{n:"Lettuce (continuous)",c:"veg",note:"Plant under cover after mid-month for winter harvest"},
|
||||
{n:"Radishes",c:"veg",note:"Continuous. Daikon for late planting"},
|
||||
{n:"Turnips, mustard",c:"veg",note:"Both greens and roots"},
|
||||
{n:"English peas (last)",c:"veg",note:"Through Oct - risky if frost early"},
|
||||
{n:"Carrots, beets (last)",c:"veg",note:"Through early Oct for fall harvest"},
|
||||
{n:"Cilantro continues",c:"herb",note:"Will produce all winter in mild years"},
|
||||
{n:"Parsley",c:"herb",note:"Cold hardy. Overwinters easily"}
|
||||
],
|
||||
transplant:[
|
||||
{n:"Last brassicas (broccoli, cabbage, cauliflower)",c:"veg",note:"Early month only. Need 60+ days before hard freeze"},
|
||||
{n:"Onion transplants (start)",c:"veg",note:"Sets or transplants for spring harvest"}
|
||||
],
|
||||
plant:[
|
||||
{n:"Strawberries",c:"fruit",note:"Plant crowns. Mulch heavy. Bear next spring"},
|
||||
{n:"Spring-flowering bulbs",c:"fruit",note:"Daffodils, hyacinths if ornamental garden"}
|
||||
],
|
||||
maintain:[
|
||||
{n:"Plan freeze protection",c:"maintain",note:"Frost cloth, row covers ready. First frost typically Nov 15"},
|
||||
{n:"Sharpen tools, organize shed",c:"maintain",note:"Winter prep"},
|
||||
{n:"Take soil tests",c:"maintain",note:"Send to Texas A&M AgriLife. Amend over winter"},
|
||||
{n:"Compost fall leaves",c:"maintain",note:"Free organic matter. Shred for faster breakdown"}
|
||||
],
|
||||
harvest:[
|
||||
{n:"Sweet potatoes (final)",c:"veg",note:"Before first frost. Cure for storage"},
|
||||
{n:"Tomatoes (final summer)",c:"veg",note:"Pick green ones before frost - ripen in paper bag with banana"},
|
||||
{n:"Peppers (peak with cool weather)",c:"veg",note:"Pick before first frost"},
|
||||
{n:"Winter squash, pumpkin",c:"veg",note:"When stems dry, rind hard. Cure 1-2 wk before storage"},
|
||||
{n:"Late okra (final)",c:"veg",note:"Until frost kills plant"},
|
||||
{n:"Cucumbers (fall crop)",c:"veg",note:"From Aug planting"},
|
||||
{n:"Beans (fall crop)",c:"veg",note:"From Aug planting"},
|
||||
{n:"Fall lettuce, spinach",c:"veg",note:"Peak quality with cool nights"},
|
||||
{n:"Persimmons",c:"fruit",note:"Asian varieties ripening. American after first frost"},
|
||||
{n:"Pecans (begin)",c:"fruit",note:"Harvest as they fall. Or shake tree gently"},
|
||||
{n:"Pomegranates",c:"fruit",note:"Continue. Storage life 2+ months refrigerated"}
|
||||
]
|
||||
}},
|
||||
"November":{climate:"Avg 50-70°F. First frost arrives ~Nov 15. Winter prep mode. Cool crops thrive.",actions:{
|
||||
direct:[
|
||||
{n:"Spinach (early)",c:"veg",note:"For winter & spring harvest. Cold hardy"},
|
||||
{n:"Radishes (continuous)",c:"veg",note:"Quick 25-day crop"},
|
||||
{n:"Lettuce (under cover)",c:"veg",note:"Cold frames or low tunnels extend through winter"},
|
||||
{n:"Kale (cold-hardy varieties)",c:"veg",note:"Vates, Red Russian survive 10°F"},
|
||||
{n:"Mâche/corn salad",c:"veg",note:"Extremely cold hardy. Slow growing but reliable winter green"},
|
||||
{n:"Cilantro (continues)",c:"herb",note:"Thrives in cool weather"}
|
||||
],
|
||||
plant:[
|
||||
{n:"Garlic (LAST call)",c:"veg",note:"Oct-Nov. Mulch heavy after planting"},
|
||||
{n:"Onion transplants (continue)",c:"veg",note:"Throughout month. Short-day for South - Texas Supersweet, Yellow Granex"},
|
||||
{n:"Asparagus crowns (late month)",c:"veg",note:"Begin window for dormant planting"},
|
||||
{n:"Bare-root fruit trees (begin)",c:"fruit",note:"Best planting season starts. Peaches, plums, apples"},
|
||||
{n:"Blackberries, raspberries",c:"fruit",note:"Begin bare-root planting season"}
|
||||
],
|
||||
maintain:[
|
||||
{n:"FROST PROTECTION READY",c:"maintain",note:"First frost typically Nov 15. Cover tender plants overnight"},
|
||||
{n:"Heavy mulch on perennials",c:"maintain",note:"4-6\" around strawberries, asparagus, herbs"},
|
||||
{n:"Empty hoses, drain irrigation",c:"maintain",note:"Before hard freeze"},
|
||||
{n:"Pull spent summer crops",c:"maintain",note:"Compost healthy debris, trash diseased"},
|
||||
{n:"Plant cover crops on empty beds",c:"maintain",note:"Crimson clover, winter rye, vetch"}
|
||||
],
|
||||
harvest:[
|
||||
{n:"Brassicas (broccoli, cabbage, cauliflower)",c:"veg",note:"Peak harvest from Sept plantings"},
|
||||
{n:"Kale, collards (peak)",c:"veg",note:"Sweetest after first frosts"},
|
||||
{n:"Brussels sprouts",c:"veg",note:"Pick from bottom up as they mature"},
|
||||
{n:"Carrots, beets, turnips",c:"veg",note:"From Sept plantings. Sweeter with cold"},
|
||||
{n:"Lettuce, spinach, chard",c:"veg",note:"Continuous from fall plantings"},
|
||||
{n:"Late peppers (before frost)",c:"veg",note:"Pick everything before hard freeze"},
|
||||
{n:"Persimmons (American)",c:"fruit",note:"After first frost. Soft when ripe"},
|
||||
{n:"Pecans (peak)",c:"fruit",note:"Daily collection. Beat trees if needed"},
|
||||
{n:"Pomegranates (last)",c:"fruit",note:"Final harvest"},
|
||||
{n:"Citrus (Satsuma, kumquat begin)",c:"fruit",note:"Pick before hard freeze, cover trees"}
|
||||
]
|
||||
}},
|
||||
"December":{climate:"Avg 41-60°F. Winter. Hard freezes possible. Dormant season for most. Planning time.",actions:{
|
||||
indoor:[
|
||||
{n:"Onions (start mid-late month)",c:"veg",note:"For January transplant. 10-12 weeks lead time"},
|
||||
{n:"Perennial herbs",c:"herb",note:"Sage, thyme, oregano, rosemary cuttings"}
|
||||
],
|
||||
plant:[
|
||||
{n:"Bare root fruit trees (peak season)",c:"fruit",note:"Dec-Feb best window. Apple, peach, plum, pear, fig"},
|
||||
{n:"Berries (blackberry, raspberry, blueberry)",c:"fruit",note:"Dormant planting. Choose proven Texas varieties"},
|
||||
{n:"Grapes",c:"fruit",note:"Bare root dormant planting"},
|
||||
{n:"Pecan trees",c:"fruit",note:"Dec-Feb. Dig wide hole - tap root is long"},
|
||||
{n:"Garlic (final call)",c:"veg",note:"If you missed Oct-Nov, plant by early Dec"},
|
||||
{n:"Strawberries (continuing)",c:"fruit",note:"Mulch heavily"}
|
||||
],
|
||||
maintain:[
|
||||
{n:"Dormant pruning fruit trees (late month)",c:"fruit",note:"After leaves fall. Heavy pruning OK"},
|
||||
{n:"Mulch tender perennials",c:"maintain",note:"Heavy mulch on figs, citrus, pomegranates"},
|
||||
{n:"Cover citrus during freezes",c:"fruit",note:"Christmas lights + tarp = several degrees protection"},
|
||||
{n:"Plan next year's garden",c:"maintain",note:"Order seeds. Sketch beds. Crop rotation planning"},
|
||||
{n:"Soil amendments",c:"maintain",note:"Compost, manure aged 6+ months, gypsum into beds"},
|
||||
{n:"Sharpen and oil tools",c:"maintain",note:"Winter maintenance for spring readiness"},
|
||||
{n:"Order seeds early",c:"maintain",note:"Heirloom suppliers sell out by January"}
|
||||
],
|
||||
harvest:[
|
||||
{n:"Citrus (Satsuma, Meyer lemon, kumquat)",c:"fruit",note:"Peak harvest. Refrigerate or process"},
|
||||
{n:"Kale, collards (peak)",c:"veg",note:"Sweetest in winter"},
|
||||
{n:"Brussels sprouts (peak)",c:"veg",note:"From bottom up"},
|
||||
{n:"Cabbage (slow growth, store on plant)",c:"veg",note:"Cold doesn't hurt - leave until needed"},
|
||||
{n:"Carrots, beets, turnips (store on ground)",c:"veg",note:"Mulch and pull as needed all winter"},
|
||||
{n:"Lettuce, spinach (cold frame)",c:"veg",note:"With protection"},
|
||||
{n:"Radishes, mustard, mâche",c:"veg",note:"Continuous from fall plantings"},
|
||||
{n:"Pecans (final cleanup)",c:"fruit",note:"Refrigerate or freeze for storage"}
|
||||
]
|
||||
}}
|
||||
};
|
||||
|
||||
const CAT_NAMES = {veg:"Vegetable",herb:"Herb",fruit:"Fruit"};
|
||||
const ACTION_NAMES = {indoor:"Start Indoors",direct:"Direct Sow",transplant:"Transplant Outdoors",harvest:"Harvest",plant:"Plant",maintain:"Maintenance"};
|
||||
const ACTION_ORDER = ["indoor","direct","transplant","plant","harvest","maintain"];
|
||||
|
||||
const offActions = new Set();
|
||||
let currentCat = "";
|
||||
let currentQuery = "";
|
||||
|
||||
function buildNav(){
|
||||
const months = Object.keys(CAL);
|
||||
const cur = new Date().getMonth();
|
||||
const nav = document.getElementById("nav");
|
||||
nav.innerHTML = months.map(function(m,i){
|
||||
var cls = (i===new Date().getMonth())?' current':'';
|
||||
return '<a href="#m'+i+'" class="'+cls+'" data-i="'+i+'">'+m.substr(0,3)+'</a>';
|
||||
}).join("");
|
||||
}
|
||||
|
||||
function render(){
|
||||
const cont = document.getElementById("months");
|
||||
const cur = new Date().getMonth();
|
||||
const out = [];
|
||||
Object.entries(CAL).forEach(([month,data],i) => {
|
||||
let sections = [];
|
||||
ACTION_ORDER.forEach(action => {
|
||||
if (offActions.has(action)) return;
|
||||
const list = data.actions[action] || [];
|
||||
const filtered = list.filter(p => {
|
||||
if (currentCat && p.c !== currentCat) return false;
|
||||
if (currentQuery && !((p.n||"")+(p.note||"")).toLowerCase().includes(currentQuery)) return false;
|
||||
return true;
|
||||
});
|
||||
if (filtered.length === 0) return;
|
||||
sections.push(
|
||||
'<div class="action-group">' +
|
||||
'<div class="action-title '+action+'">'+ACTION_NAMES[action]+'</div>' +
|
||||
'<div class="plants">' +
|
||||
filtered.map(p =>
|
||||
'<div class="plant '+action+'">' +
|
||||
'<div class="name">'+(CAT_NAMES[p.c]?'<span class="cat-tag">'+CAT_NAMES[p.c]+'</span>':'')+escapeHtml(p.n)+'</div>' +
|
||||
(p.note ? '<div class="note">'+escapeHtml(p.note)+'</div>' : '') +
|
||||
'</div>'
|
||||
).join("") +
|
||||
'</div>' +
|
||||
'</div>'
|
||||
);
|
||||
});
|
||||
out.push(
|
||||
'<div class="month '+(i===cur?"current":"")+'" id="m'+i+'">' +
|
||||
'<h2>'+month+'</h2>' +
|
||||
'<div class="climate">'+data.climate+'</div>' +
|
||||
(sections.length ? sections.join("") : '<div class="empty">No items match current filters.</div>') +
|
||||
'</div>'
|
||||
);
|
||||
});
|
||||
cont.innerHTML = out.join("");
|
||||
}
|
||||
|
||||
function escapeHtml(s){
|
||||
return String(s).replace(/[&<>"']/g, c => ({'&':'&','<':'<','>':'>','"':'"',"'":'''}[c]));
|
||||
}
|
||||
|
||||
document.getElementById("legend").addEventListener("click", e => {
|
||||
const el = e.target.closest("span[data-action]");
|
||||
if (!el) return;
|
||||
const a = el.dataset.action;
|
||||
if (offActions.has(a)) { offActions.delete(a); el.classList.remove("off"); }
|
||||
else { offActions.add(a); el.classList.add("off"); }
|
||||
render();
|
||||
});
|
||||
|
||||
document.getElementById("catFilter").addEventListener("change", e => {
|
||||
currentCat = e.target.value;
|
||||
render();
|
||||
});
|
||||
|
||||
document.getElementById("search").addEventListener("input", e => {
|
||||
currentQuery = e.target.value.toLowerCase();
|
||||
render();
|
||||
});
|
||||
|
||||
buildNav();
|
||||
render();
|
||||
// Auto-scroll to current month
|
||||
setTimeout(() => {
|
||||
const cur = document.querySelector(".month.current");
|
||||
if (cur) cur.scrollIntoView({behavior:"smooth", block:"start"});
|
||||
}, 100);
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
Reference in New Issue
Block a user