Skip to content

New App: Custard Forecast — multi-brand 3-day flavor forecast#3182

Open
chriskaschner wants to merge 2 commits intotidbyt:mainfrom
chriskaschner:add-culvers-forecast
Open

New App: Custard Forecast — multi-brand 3-day flavor forecast#3182
chriskaschner wants to merge 2 commits intotidbyt:mainfrom
chriskaschner:add-culvers-forecast

Conversation

@chriskaschner
Copy link

@chriskaschner chriskaschner commented Feb 22, 2026

Summary

Adds Custard Forecast -- a 3-day Flavor of the Day forecast with color-coded pixel-art ice cream cones, supporting multiple Wisconsin custard brands.

  • Multi-brand support: Culver's, Kopp's, Gille's, Hefner's, Kraverz, and Oscar's
  • schema.Typeahead store search across 1,079 locations via Worker API (v1)
  • Brand-specific header colors with contrast-safe text (black text on light backgrounds)
  • 29 hand-mapped flavor profiles drive cone colors (base scoop, ribbon swirl, topping accents)
  • Two-tier caching with stale data fallback -- resilient to network outages
  • Marquee scrolling header for long location names

Brand theming

Brand Header Color Text
Culver's Navy (#003366) White
Kopp's Black (#000000) White
Gille's Yellow (#EBCC35) Black
Hefner's Green (#93BE46) Black
Kraverz Orange (#CE742D) White
Oscar's Red (#BC272C) White

Brand is auto-detected from the store slug -- no extra configuration needed.

How this differs from the existing Culver's app (#3060)

Existing Culver's Custard Forecast
Brands Culver's only 6 brands (1,079 stores)
Data Today's flavor only (locator API) 3-day calendar via Worker API
Visual CDN product photo Custom pixel-art cones with flavor-specific colors
View Single day 3-day forecast with staggered layout

Test plan

  • pixlet check passes (format + lint + manifest)
  • pixlet render with default config shows demo flavors
  • Brand detection correctly maps slug patterns to brand colors
  • Light brand colors (Gille's, Hefner's) use black text for readability
  • Stale data indicator shows in header when all flavors are past dates

@tidbyt
Copy link

tidbyt bot commented Feb 22, 2026

⚠️ The automated review process is experimental and likely has bugs. Please bear with us as we iron out the kinks and enable you to ship changes at high velocity 🚀

Next Steps

Hello! Thank you so much for your change 🤜 🤛 . There are a few things you need to do:

  • Sign the CLA if you haven't already
  • Ensure your build is green! Any problem will display a proposed solution to try out
  • Get a review, either by Tidbyt Bot or by a Tidbyt engineer

Manual Review Required

Hang tight! A Tidbyt engineer will be by shortly to review your change. Here is what they will be looking for:

Test Details
App Dir All files are in a single app directory
🟡 Modules Usage of cache.star requires review
Original Author The original author matches the PR author

@tidbyt-bot
Copy link

tidbyt-bot commented Feb 22, 2026

CLA Assistant Lite bot All contributors have signed the CLA ✍️ ✅

@chriskaschner
Copy link
Author

I have read the CLA Document and I hereby sign the CLA

Adds a Culver's Flavor of the Day forecast app that shows the next 3 days
of flavors with color-coded pixel-art ice cream cones. Uses schema.LocationBased
for store selection and fetches multi-day data from __NEXT_DATA__ on restaurant pages.

Different from the existing Culver's app (tidbyt#3060): this shows a 3-day forecast
with custom pixel art, rather than a single day with a CDN photo.
@chriskaschner chriskaschner changed the title New App: Culver's Forecast New App: Custard Forecast — multi-brand 3-day flavor forecast Feb 22, 2026
Switch from direct Culver's scraping to Worker API (v1) which supports
multiple custard brands. Auto-detects brand from store slug and applies
per-brand header colors with contrast-safe text (black text on light
backgrounds like Gille's yellow and Hefner's green).

Supported brands: Culver's, Kopp's, Gille's, Hefner's, Kraverz, Oscar's.

Also adds:
- Marquee scrolling header for long location names
- Two-tier cache resilience with stale data fallback
- schema.Typeahead store search across all 1079 stores
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants