User & tester field guide

Every button, field, and number β€” what it does and why

Bloom Calendar predicts when plants bloom and pollen/nectar flows peak for your location, using accumulated heat (Growing Degree Days) rather than the calendar date β€” then sharpens those predictions using real sightings logged by you and other users. This guide walks through every screen so you can hand it to a tester or new user without explaining it yourself.

It's organized in the order the app actually presents things: pick a view, read the top controls once, then a section per tab. Jump to any part from the left.

Choosing a view

The first thing anyone sees β€” pick what you came for and the app hides everything irrelevant

Opening the app shows a "What brings you here today?" screen with six specific roles plus an "All" option. This isn't a cosmetic filter β€” each choice sets which tabs appear in the tab bar, which tab opens by default, and which plants show up throughout the app (via a hidden Category/Audience/Pollinator filter matching the description below). Anyone can switch views later using the ☰ button in the top controls, or return to "All" to see everything unfiltered.

🐝

Beekeeper

Bloom timeline, dearth detection, major flow alerts, hive management timing. Log your observations to sharpen the calendar.

Opens on: Timeline
🌱

Gardener / Grower

Vegetables, fruit, garden plants, planting dates, frost risk. Log what blooms in your garden to calibrate your local dates.

Opens on: Plants
🦌

Hunter / Land Manager

Food plot timing, clover, alfalfa, sunflower, wildlife habitat. Log bloom dates from your land to improve regional accuracy.

Opens on: My Food Plots
πŸ„

Forager

Wild forage plants, berries, mushroom seasons, morel timing. Log what you find and when β€” every observation helps.

Opens on: Now
πŸ’œ

Lavender Grower

Variety comparison, bloom windows, humidity ratings, MU Extension recommendations. Log your lavender bloom dates to calibrate.

Opens on: Lavender
πŸ¦‹

Butterfly / Monarch

Milkweed host plants, native nectar corridor, monarch migration plant timing. Log milkweed and nectar plant bloom dates.

Opens on: Plants

Show everything β†’ at the bottom of that screen skips all filtering and unlocks every tab (adds Mushrooms and Lavender to the tab bar alongside everything else) β€” the option to reach for when testing, or when you just don't fit one box.

ViewTabs shown
BeekeeperTimeline, Now, Plants, Fill Gaps, Log My Blooms, What's New
Gardener / GrowerTimeline, Now, Plants, Fill Gaps, Log My Blooms, What's New
Hunter / Land ManagerTimeline, Now, Plants, My Food Plots, Fill Gaps, Log My Blooms, What's New
ForagerTimeline, Now, Plants, Mushrooms, Log My Blooms, What's New
Lavender GrowerTimeline, Lavender, Plants, Fill Gaps, Log My Blooms, What's New
Butterfly / MonarchTimeline, Now, Plants, Fill Gaps, Log My Blooms, What's New
AllEvery tab: Timeline, Now, Plants, My Food Plots, Mushrooms, Lavender, Fill Gaps, Log My Blooms, What's New

Top controls

Always visible above the tabs, on every view

πŸ” Identify a plant floating button, bottom corner

Not part of the controls row below β€” a persistent round button fixed to the corner of the screen on every tab, so it's never buried among the other controls. Tapping it jumps straight to Log My Blooms with the photo picker already open, ready to identify what you're looking at and log it in one step (see Log a bloom).

State

Picks which state's plant list and city list you're browsing. Everything below β€” Timeline, Plants, Now, calibration β€” is scoped to this state.

City / Region

Your reference location within that state. Bloom dates, GDD, frost dates, and calibration are all computed relative to this specific city.

πŸ“ Use my exact location

Sends your device's GPS coordinates directly to OpenStreetMap, Open-Elevation, and Open-Meteo to find your nearest supported city and fine-tune the forecast for your exact spot rather than the nearest listed city center. These three lookups go straight from your device to those services β€” the app's own server never sees your raw coordinates from this toggle.

GDD override optional

Lets you type in the real accumulated Growing Degree Days for today instead of the app's estimate, if you looked it up on the USA-NPN map (linked right next to the field). Leave blank and the app estimates it for you. The "⚑ Nearest station" button next to it does this automatically, pulling from the closest personal weather station instead of you looking anything up.

πŸ“‘ Station data

Opens a panel showing the actual weather station readings behind the numbers above: the real high/low temperatures, rainfall, and daily heat units pulled for the last several days, plus a dropdown listing every nearby station (nearest first, distance shown) so you can pick a different one if the auto-picked station seems off β€” a personal weather station can occasionally sit somewhere unrepresentative (a rooftop, a shaded yard) even when it's the closest one.

Use station automatically checkbox

Makes the "⚑ Nearest station" pull happen on its own every time you open the app or switch location, rather than you remembering to tap it. Off by default, and the setting is remembered on that device only.

Worth knowing what that number is: a station's running season total is seeded from the same modelled curve the app uses everywhere else for any part of the year before the app first read that station, and the free weather feed only serves the last seven days. So the total is part measured, part modelled β€” but it gets more real the longer a station is in use, and the part that matters for calibration (how much heat has accrued between two observations) is measured.

Apply calibration checkbox, on by default

Turns the personal/regional calibration adjustment (see Calibration, explained) on or off. Uncheck it to see the plain generic model with no local adjustment β€” useful for comparing, or if you suspect a calibration offset has gone wrong somewhere.

Natives only checkbox

Hides any plant not native to the region β€” useful for restoration/habitat-focused planning where introduced ornamentals and crops aren't relevant.

Print

Opens your browser/device's print dialog for the current tab's content β€” handy for a paper copy of the timeline for the shop or truck.

☰ current view name

Reopens the "What brings you here today?" screen so you can switch roles or jump to "Show everything."

πŸ—ΊοΈ Map

Shows or hides the map panel (see below).

Debug testers & developers

Opens the Debug & Test Panel β€” see Reporting a problem. Not needed for normal use.

Status bar

The sticky strip of numbers under the tabs β€” the app's current-conditions summary at a glance

StatMeaning
LocationThe city/region currently in effect.
DateThe date predictions are calculated for β€” usually today.
GDDGrowing Degree Days accumulated since Jan 1, base 50Β°F β€” the heat-unit clock the whole bloom model runs on.
BloomingHow many plants are in bloom right now for this location/filter.
ForageCurrent nectar/pollen flow rating for the region (Major / Maintenance / Minor / none) β€” see the flow legend under Timeline.
Frost-freeModeled light-frost (~32Β°F) date from climate normals β€” a statistical estimate, not a real-time forecast.
Killing frostOnly appears once someone has logged one. Unlike "Frost-free," there's no reliable model for a killing (~28Β°F) frost β€” the one that actually ends goldenrod/aster and the fall flow β€” so this figure comes entirely from real logged sightings, never a model.
CalibrationShows once a regional calibration offset is active for this location β€” see Calibration, explained.

Banners can appear above the status bar: a flow alert (when a major or dearth-adjacent shift is happening) and a dearth alert (when little to nothing is blooming) β€” both informational, no action needed.

Frost can now record itself. Whenever the app looks up the nearest weather station to a location β€” via "⚑ Nearest station" or the automatic setting β€” that station joins a nightly watch list, and the first light frost and first hard freeze it measures each fall are recorded for that location automatically. Only the first of each per autumn is kept, counted from July so a January cold snap isn't mistaken for the start of the next winter. A frost you logged yourself always takes precedence over a measured one, and measured dates say so in their note. This doesn't replace logging β€” plenty of locations have no station close enough to mean much β€” but it means the figure is no longer blank purely because nobody was watching the thermometer.
❄️ The fall frost prompt is the one banner that asks something of you. From about three weeks before your area's typical first frost through the end of the year, it appears until a killing frost has been logged for your location this year β€” tapping it drops you straight into the frost form with the date and type already filled in. It's asking because the killing-frost date is the only figure in the app with no model behind it at all: it exists only if someone logs it, and it's what actually ends the fall flow. Once you (or anyone at your location) log one for the year, it stops appearing.

Map panel

Opened with the πŸ—ΊοΈ Map button

πŸ“ Locate me

Centers the map on your device's current GPS position.

Land cover Esri

Overlays land-cover classification (forest, cropland, wetland, etc.) for the visible map area.

National forest boundaries USFS

Overlays U.S. Forest Service national forest boundary lines.

Rivers & lakes USGS

Overlays surface-water features.

🌸 Bloom reports

Plots recently logged bloom sightings as pins on the map.

Pan or zoom to reload a checked layer for the newly visible area β€” layers don't auto-extend as you move.


Tab: Now

BeekeeperGardenerHunterForagerLavenderButterflyAll

The season-progress snapshot. A meter bar shows how far the year has progressed in accumulated heat units (GDD, from Jan 1), and below it two columns list what's Blooming now and what's Coming up next, respecting whatever view/filters are active.

Tab: Timeline

BeekeeperGardenerHunterForagerLavenderButterflyAll

The default screen for most views β€” a horizontal calendar of every plant's predicted bloom window across the year, filterable and sortable.

Filters

Search

Filters the list to plants whose name matches what you type.

Category

Trees, Shrubs, Wildflowers, Crops & forage, Flower garden, Vegetables, Fruit & berry.

Audience

Monarch & butterfly, Cut flowers, Food plot, Forageable β€” a manual tag filter independent of which persona view you're in.

Month

Shows only plants blooming during a specific month.

Flow

Major, Maintenance, Minor, or Pollen only β€” filters to plants rated at that nectar/pollen flow level.

Bloom stage

First bloom, Peak bloom, or Bloom fading β€” filters to plants currently in that specific stage, not just "in bloom."

⭐ My Plants only

Shows only plants you've personally starred/favorited elsewhere in the app.

Pollinator

Honey bees, Native bees, Bumble bees, or Butterflies β€” filters to plants that specific pollinator visits.

Clear

Resets every filter above back to "All"/blank in one tap.

Sort by

Name A–Z, or Bloom date (default) β€” controls the row order of the timeline below.

Reading the bars

Each row is one plant; the horizontal bar shows its predicted bloom window across the months along the top. A faded section at each end of a bar means opening/closing bloom; the solid center section is peak bloom.

Major flow Maintenance flow Minor flow Pollen only Dearth (little/nothing blooming) This plant's window has been calibrated by real sightings Light frost Killing frost (logged)
❄ on a bloom window means that window was cut short by the end of the growing season rather than by the heat model. Two cases: a killing frost has been logged for your location (a hard freeze ends goldenrod and aster whatever the heat total says), or the plant's heat target simply can't be reached where you are β€” common in cooler regions for anything blooming into fall, since heat stops accumulating in late October. Hover the bar for which one applies.

Flow ratings describe the nectar/pollen contribution to a hive, not how showy the bloom looks: Major = a significant honey-producing flow; Maintenance = enough to sustain a colony but not build surplus; Minor = a light contribution; Pollen = pollen only, no meaningful nectar.

Tab: Plants

BeekeeperGardenerHunterForagerLavenderButterflyAll

The same filtered plant set as Timeline, but as a browsable list instead of a calendar bar chart β€” better for reading details on one plant at a time.

☰ Table / β–  Cards

Switches between a dense table layout and a larger card layout for the same data.

Show all

Bypasses the default "top N" cap and lists every matching plant.

Sort by

Name A–Z, or Bloom date.

Last year: bloomed [date]

On an expanded card, if you (or another user, at your exact ZIP) logged this plant blooming in a prior year, its most recent prior-year sighting shows here as a plain fact β€” separate from the model's prediction above it. Only appears once at least one full prior year of data exists for that plant/location.

Tab: My Food Plots

HunterAll Everyone else β€” hidden
Food plots run on a different clock than the rest of the app. Deer don't wait for a plot to bloom β€” they browse tops, bulbs, and forage as soon as it's grown in. So this tab tracks readiness by days since you planted, not the Growing-Degree-Day bloom calendar used everywhere else.

Plan backward from a date

Above the plot tracker is a separate calculator for planning ahead, before you've planted anything: pick a target date β€” like the opening day of deer season β€” and check off the plants you're considering.

Target date

The date you want the plot ready by.

Plants you're considering

Check every species you're weighing β€” each gets its own recommendation.

Calculate planting dates

For each checked plant, shows the latest date you can plant and still have it ready in time β€” planting right on that date also keeps the plot freshest for as long as possible into the season β€” plus the earliest date it's worth planting before it risks being past prime by your target date. If that latest date has already passed, it flags the plant as too late and tells you to plant as soon as possible.

Add a plot

Plot name optional

A label like "North ridge plot" β€” helps when you're tracking more than one.

Date planted

When you put seed in the ground for this plot.

Species planted

Check every species in the mix β€” most real plots are a blend (e.g. clover + turnip), and this supports checking several at once.

Add plot

Saves the plot to this device. Food plots are personal/property data β€” they are not shared with other users or synced to a server, unlike bloom sightings.

Reading a saved plot

Viewing

Filters the list below to one plot at a time, instead of showing every saved plot stacked together.

Each plot card shows a status chip based on how many days have passed since planting, compared against a typical readiness window for that species:

StatusMeaning
EstablishingStill short of the minimum days needed before it's worth browsing. Shows an estimated "~N days to ready" countdown.
Ready for deerWithin the typical readiness window for that species.
Past primePast the typical window β€” still may be usable (turnip bulbs in particular sweeten after frost), just no longer at its peak.

Tab: Mushrooms

ForagerAll Everyone else β€” hidden
Safety first: this tab shows typical seasons only β€” it is not an identification guide. Several dangerous species mimic harmless-looking ones. Always confirm any find with an expert before doing anything with it.

Below the safety notice: a season reference table for common mushroom species β€” tap or hover a row for the full detail (where to look, timing cue, lookalike warning), since the table itself keeps those columns short. Below that, a form to log a sighting.

Sort by

Name A–Z, or Season start β€” controls the row order of the table.

Report a sighting

This records when and where a species was seen β€” it is not an identification or edibility claim. Photos and expert confirmation happen off-app; this just tracks seasonal timing.

Common name

What you believe you found.

Date seen

When you found it.

Where / notes

Location detail, e.g. "dead oak stump, north-facing slope."

πŸ“· Add a photo optional

Only visible during admin review β€” never publicly displayed. Still not treated as an edibility claim.

Report sighting

Submits for admin review before it's added to seasonal data.

Tab: Lavender

Lavender GrowerAll Everyone else β€” hidden
Missouri notes: MU Extension trials found six cultivars perform well in Missouri β€” Munstead, Hidcote, Phenomenal, Grosso, Provence, and Dutch Mill. Spanish lavender (L. stoechas) does not survive Missouri winters β€” one Centralia farm lost 100% of 36 plants their first winter. All types need excellent drainage; Missouri humidity and clay soil are the main challenges. Plan for 20–25% annual plant loss per MU Extension.

Below the notice is a variety comparison table β€” hover or tap any row for detail on that cultivar's bloom window and characteristics.

Tab: Fill Gaps

BeekeeperGardenerHunterForagerLavenderButterflyAll

Identifies dearth windows β€” stretches of the year with little or nothing blooming for your location/filter β€” and suggests plants you could add to your land to sow across that gap.

Tab: Log My Blooms (internally "Calibrate")

BeekeeperGardenerHunterForagerLavenderButterflyAll
Every observation improves the calendar β€” for everyone. You don't need to know the GDD, just pick the plant, enter the date, and add a note. The more observations logged across all users, the better the calendar gets for your whole region. Fall observations matter even more than spring ones β€” goldenrod, aster, and other late bloomers respond more to shortening daylight than to accumulated heat, so this is where real sightings help the most.
Observations and notes you log are shared publicly with other users β€” don't include personal information in the notes.

Log a bloom

Date observed

The date you actually saw it.

City

Where you saw it. A small map preview shows exactly where the log will be recorded β€” check the pin before submitting. The πŸ“ GPS button next to it finds your nearest supported city automatically.

"🏘️ Don't see a city near you? Request one" opens a small form (town name, state, optional note) to ask for a new city to be added β€” useful for a bee yard or garden you have somewhere you haven't physically visited with the app yet.

Plant

Pick from the list. If your plant isn't listed, a "🌿 Don't see your plant? Report it and log this bloom together" panel appears β€” fill in a common name and what you observed, optionally attach a photo (with a "πŸ” Suggest a name" button that runs it through a plant-ID service), and it logs your sighting immediately rather than waiting on the new plant being reviewed first.

Bloom stage

First bloom, Peak bloom, Bloom fading, Done blooming β€” or for trees, Leaf color changing / Leaves down. Leaf-color logs are informational canopy notes only; they never shift bloom-date calibration.

Precise GDD optional

For the most accurate calibration, look up the real accumulated GDD for that date/location on the USA-NPN map and paste it here. Leave blank and the app estimates it. The "⚑ Nearest station" button fills this automatically from the closest personal weather station.

Notes

Free text, e.g. "full bloom, roadside."

Log bloom

Submits the observation. New observations go to a moderation queue before they count toward public/regional calibration, unless a device has a valid operator key set (see below).

Log a frost sighting

The "Frost-free" stat elsewhere in the app uses a modeled 32Β°F estimate from climate normals. There's no reliable model for the 28Β°F killing frost that actually ends goldenrod/aster and most of the fall flow β€” that figure is built entirely from real sightings logged here.

A late-spring freeze is real, worth logging (it can genuinely kill an early bloomer's flowers), but it's only treated as ending the growing season if it's logged from July onward β€” a spring frost doesn't mean summer and fall plants are already done before they've started. It still gets recorded either way.

Date observed

When the frost occurred.

Frost type

Light frost (~32Β°F) or Killing frost (~28Β°F) β€” these are tracked and used very differently, see above.

Notes optional

E.g. "light coating on the grass."

Log frost

Submits the frost sighting.

Operator key site operator only

An optional field for the app's operator/admin device only β€” ordinary users should leave it blank. With a valid key set, that device's bloom and frost logs publish immediately to every other Bloom Calendar client instead of sitting in the moderation queue first. The key is stored only on that one device/browser.

Your logged observations

Below the forms, a running list of what you've logged, plus a calibration summary showing what offset (if any) your data has produced. Three actions sit at the bottom:

Export JSON

Downloads all your logged observations as a JSON file β€” a personal backup, or something to hand off if switching devices.

Import JSON

Loads observations back in from a previously exported file.

Clear all

Deletes all logged observations from this device. This cannot be undone β€” use Export first if you might want them back.

Tab: What's New

BeekeeperGardenerHunterForagerLavenderButterflyAll

A plain-language, newest-first version history of what's changed in the app β€” no developer jargon, written for a beekeeper or hunter reading it, not a programmer.


Calibration, explained

How your logged sightings actually change the predictions

The base model predicts every plant's bloom window from accumulated heat (Growing Degree Days, counted from Jan 1) β€” the same formula everywhere in a state. Calibration is the layer on top that adjusts those generic predictions using real, logged sightings. It works in two distinct ways, applied in this order:

  1. Plant-specific calibration. If that exact plant has been logged at your exact ZIP code at least once, its own predicted window shifts to match β€” this is the most precise adjustment, but it only affects that one plant, at that one ZIP.
  2. Regional offset β€” this is what shifts everything else. The app also pools all logged observations (any plant) from your ZIP code, or β€” if it can determine which county your ZIP is in β€” your whole county. Once at least 5 qualifying observations exist in that pool, it calculates the typical (median) difference between when things were actually seen and when the model predicted them, and applies that single shared offset to every plant's predicted window for that ZIP/county β€” not just the plant(s) that were logged.
So yes β€” logging a handful of bloom dates (five or more) genuinely does shift predictions for plants you never personally logged. The area affected is your county if the app can resolve one for your ZIP code, or just that single ZIP code if it can't. It never extends state-wide. This is intentional, not a bug β€” it's the whole reason logging observations matters, even for plants a tester doesn't personally care about.

The offset is measured and shown in real days, not heat units. Earlier versions scored every sighting in GDD (heat units), which sounds precise but isn't a constant exchange rate β€” the same real-world "a week early" reads as a big number in June and almost nothing in October, since heat piles up fast in summer and barely at all by late fall. A sighting a week off now counts as a week everywhere it's used, whichever season it happened in. You'll see this as "12 days later" rather than a GDD figure in the status bar and calibration summary.

The size of the shift a plant can take is also scaled to that plant's own bloom length β€” a shift can move a window by at most half its own real span. A shared regional offset built mostly from mid-summer sightings could otherwise swallow a short two-week spring bloomer's entire window; capping it per plant keeps that from happening while still letting a long-blooming fall plant take a proportionately larger shift.

Below the 5-observation threshold, the status bar's "Calibration" stat and the observation list both show a running count like "3/5 obs to regional cal" so you can see how close a location is to activating it. Unchecking Apply calibration in the top controls always reverts to the plain, uncalibrated model for comparison.

Reporting a problem

For testers β€” how to get useful diagnostic info out of the app

Tap Debug in the top controls to open the Debug & Test Panel. It's meant for testers and developers, not needed for normal use.

Re-run tests

Runs the app's internal self-checks and shows pass/fail results.

Console log

Turns on verbose logging in the browser's developer console.

πŸ“‹ Copy debug info

The most useful button for a tester who hits something wrong. On a phone there's no way to see the browser console, so this collects the app's recent internal log, current state, and self-test results into one block of text, then tries to open your device's share sheet (email/message it directly), falling back to copying it to your clipboard, falling back to showing it as selectable text if neither works. Paste or send that whenever reporting a bug β€” it tells the developer far more than "it didn't update."

Privacy & data

Accounts are optional. You can use everything without one; signing in (Google, or Apple on iPhone and iPad) only keeps your own logged observations synced across your devices, and we never receive your name, email or phone number. "Delete account", next to "Sign out", permanently removes the account and everything synced to it (your log on this device stays). If you have no account, everything you submit is anonymous. Bloom/frost/mushroom sightings you log are shared publicly and pooled into shared calibration; food plots and the GDD override are kept local to your device only. Full policy is published in-app at /privacy.

↑ Back to top