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.
Gardener / Grower
Vegetables, fruit, garden plants, planting dates, frost risk. Log what blooms in your garden to calibrate your local dates.
Hunter / Land Manager
Food plot timing, clover, alfalfa, sunflower, wildlife habitat. Log bloom dates from your land to improve regional accuracy.
Forager
Wild forage plants, berries, mushroom seasons, morel timing. Log what you find and when β every observation helps.
Lavender Grower
Variety comparison, bloom windows, humidity ratings, MU Extension recommendations. Log your lavender bloom dates to calibrate.
Butterfly / Monarch
Milkweed host plants, native nectar corridor, monarch migration plant timing. Log milkweed and nectar plant bloom dates.
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.
| View | Tabs shown |
|---|---|
| Beekeeper | Timeline, Now, Plants, Fill Gaps, Log My Blooms, What's New |
| Gardener / Grower | Timeline, Now, Plants, Fill Gaps, Log My Blooms, What's New |
| Hunter / Land Manager | Timeline, Now, Plants, My Food Plots, Fill Gaps, Log My Blooms, What's New |
| Forager | Timeline, Now, Plants, Mushrooms, Log My Blooms, What's New |
| Lavender Grower | Timeline, Lavender, Plants, Fill Gaps, Log My Blooms, What's New |
| Butterfly / Monarch | Timeline, Now, Plants, Fill Gaps, Log My Blooms, What's New |
| All | Every 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
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).
Picks which state's plant list and city list you're browsing. Everything below β Timeline, Plants, Now, calibration β is scoped to this state.
Your reference location within that state. Bloom dates, GDD, frost dates, and calibration are all computed relative to this specific city.
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.
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.
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.
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.
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.
Hides any plant not native to the region β useful for restoration/habitat-focused planning where introduced ornamentals and crops aren't relevant.
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.
Reopens the "What brings you here today?" screen so you can switch roles or jump to "Show everything."
Shows or hides the map panel (see below).
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
| Stat | Meaning |
|---|---|
| Location | The city/region currently in effect. |
| Date | The date predictions are calculated for β usually today. |
| GDD | Growing Degree Days accumulated since Jan 1, base 50Β°F β the heat-unit clock the whole bloom model runs on. |
| Blooming | How many plants are in bloom right now for this location/filter. |
| Forage | Current nectar/pollen flow rating for the region (Major / Maintenance / Minor / none) β see the flow legend under Timeline. |
| Frost-free | Modeled light-frost (~32Β°F) date from climate normals β a statistical estimate, not a real-time forecast. |
| Killing frost | Only 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. |
| Calibration | Shows 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.
Map panel
Opened with the πΊοΈ Map button
Centers the map on your device's current GPS position.
Overlays land-cover classification (forest, cropland, wetland, etc.) for the visible map area.
Overlays U.S. Forest Service national forest boundary lines.
Overlays surface-water features.
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
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
The default screen for most views β a horizontal calendar of every plant's predicted bloom window across the year, filterable and sortable.
Filters
Filters the list to plants whose name matches what you type.
Trees, Shrubs, Wildflowers, Crops & forage, Flower garden, Vegetables, Fruit & berry.
Monarch & butterfly, Cut flowers, Food plot, Forageable β a manual tag filter independent of which persona view you're in.
Shows only plants blooming during a specific month.
Major, Maintenance, Minor, or Pollen only β filters to plants rated at that nectar/pollen flow level.
First bloom, Peak bloom, or Bloom fading β filters to plants currently in that specific stage, not just "in bloom."
Shows only plants you've personally starred/favorited elsewhere in the app.
Honey bees, Native bees, Bumble bees, or Butterflies β filters to plants that specific pollinator visits.
Resets every filter above back to "All"/blank in one tap.
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.
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
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.
Switches between a dense table layout and a larger card layout for the same data.
Bypasses the default "top N" cap and lists every matching plant.
Name AβZ, or Bloom 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
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.
The date you want the plot ready by.
Check every species you're weighing β each gets its own recommendation.
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
A label like "North ridge plot" β helps when you're tracking more than one.
When you put seed in the ground for this plot.
Check every species in the mix β most real plots are a blend (e.g. clover + turnip), and this supports checking several at once.
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
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:
| Status | Meaning |
|---|---|
| Establishing | Still short of the minimum days needed before it's worth browsing. Shows an estimated "~N days to ready" countdown. |
| Ready for deer | Within the typical readiness window for that species. |
| Past prime | Past the typical window β still may be usable (turnip bulbs in particular sweeten after frost), just no longer at its peak. |
Tab: Mushrooms
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.
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.
What you believe you found.
When you found it.
Location detail, e.g. "dead oak stump, north-facing slope."
Only visible during admin review β never publicly displayed. Still not treated as an edibility claim.
Submits for admin review before it's added to seasonal data.
Tab: Lavender
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
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")
Log a bloom
The date you actually saw it.
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.
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.
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.
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.
Free text, e.g. "full bloom, roadside."
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.
When the frost occurred.
Light frost (~32Β°F) or Killing frost (~28Β°F) β these are tracked and used very differently, see above.
E.g. "light coating on the grass."
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:
Downloads all your logged observations as a JSON file β a personal backup, or something to hand off if switching devices.
Loads observations back in from a previously exported file.
Deletes all logged observations from this device. This cannot be undone β use Export first if you might want them back.
Tab: What's New
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:
- 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.
- 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.
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.
Runs the app's internal self-checks and shows pass/fail results.
Turns on verbose logging in the browser's developer console.
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.