Four engines compose every screen: a multi-framework Calendar Engine, a Vocabulary Substitution layer, location-aware Astronomical calculations, and Sabbath Mode. Below is the data, flow, and rules that make them work together.
┌────────────────────┐ ┌──────────────────────┐ ┌────────────────────┐
│ Household Profile │─────▶│ Vocabulary Engine │─────▶│ Render Layer │
│ (calendar, vocab, │ │ (token substitution │ │ (mobile/web UI) │
│ day-begin, GPS) │ │ at every string) │ └──────────┬─────────┘
└─────────┬──────────┘ └──────────┬───────────┘ │
│ │ │
▼ ▼ ▼
┌────────────────────┐ ┌──────────────────────┐ ┌────────────────────┐
│ Calendar Engine │◀────▶│ Astronomy Service │◀────▶│ Notification Bus │
│ Rabbinic / Lunar │ │ sunrise/sunset/moon │ │ push, in-app, │
│ Enoch / Karaite │ │ per GPS coordinate │ │ email (per pref) │
└─────────┬──────────┘ └──────────┬───────────┘ └──────────┬─────────┘
│ │ │
└────────────┬───────────────┘ │
▼ │
┌──────────────────────┐ │
│ Sabbath Mode │────────────────────────────────┘
│ Quiet hours rule │
└──────────────────────┘Pluggable framework adapters return the same shape — { sabbathStart, sabbathEnd, newMoon, feastWindows } — so the UI never branches.
Every translatable string passes through a substitution map. Households edit pairs; the rest of the app instantly reflects their language.
Pure functions compute sunrise, sunset, twilight, and lunar phase from latitude, longitude, and date. Cached per coordinate for offline use.
Cron-style rule scheduled per household. Triggers quiet UI, mutes notifications, and surfaces the Sabbath welcome screen.
evaluate(household, now):
framework = household.framework
coords = household.gps
dayBegin = household.dayBeginning // Sunset | Sunrise | Midnight
sabbath = CalendarEngine[framework].weekly(now, coords, dayBegin)
if sabbath.start - 18.min <= now < sabbath.end + 42.min:
return QUIET_HOURS
if isFeast(framework, now, coords):
return FEAST_HOURS
return NORMALNORMAL
All features on, notifications respect quiet hours
QUIET_HOURS
Push muted, soft palette, Sabbath welcome surfaced
FEAST_HOURS
Feast content unlocked, prep checklist surfaces
Choose framework
Rabbinic / Lunar / Enoch / Karaite
Day-beginning
Sunset / Sunrise / Midnight
Vocabulary
Set Father, Son, Torah, Sabbath pairs
Grant location
GPS → astronomical cache
First sundown
Schedule push, surface checklist