Skip to content

About

Offline zmanim and Jewish observance proof of concept for Flipper Zero

Topics

Resources

Stars

2 stars

Watchers

1 watching

Forks

Repository files navigation

Kesheva for Flipper Zero

A small Momentum-firmware proof of concept that brings Kesheva's offline zmanim and next-observance view to the Flipper Zero. It follows the same local configuration pattern as the earlier Salat Clock and never needs a network connection.

What it shows

  • Now: the next upcoming zman, its time, and the selected calculation method.
  • Morning: Alos, Netz, latest Shema, latest Tefillah, and Chatzos.
  • Afternoon / night: Mincha Gedola, Mincha Ketana, Plag, Shkiah/candle lighting, Tzeis, and Rabbeinu Tam where space permits.
  • Next observance: the next display holiday plus useful fast, candle-lighting, after-nightfall, or ending flags.

Press Left/Right, Up/Down, or OK to move among the four screens. Back exits.

Install on Momentum

  1. Build the source folder against Momentum's SDK:

    ufbt update --index-url=https://up.momentum-fw.dev/firmware/directory.json
    ufbt
  2. Copy dist/kesheva.fap to /ext/apps/Tools/kesheva.fap on the Flipper SD card.

  3. Copy the contents of sd_card/ to the root of the SD card. The final paths must be:

    /ext/apps_data/kesheva/config.txt
    /ext/apps_data/kesheva/holidays_diaspora.tsv
    /ext/apps_data/kesheva/holidays_israel.tsv
    

With the Flipper connected and qFlipper closed, ufbt launch builds, installs, and starts the FAP. The installed Momentum firmware and the SDK selected by uFBT must be compatible.

Location and time zone

Edit config.txt on the SD card. Latitude, longitude, altitude, and the optional date override intentionally match Salat Clock. tz is a fixed numeric UTC offset because the Flipper does not carry the IANA daylight-saving database; update it when DST changes. The shipped Melbourne example uses tz=10.

Supported methods are baal_hatanya, gra, mga, and rabbeinu_tam. Candle lighting defaults to 18 minutes before sunset. Set diaspora=0 for the Israel snapshot.

Holiday data

The included files cover 2026 through 2035. They are compact, sorted, ASCII records derived from Kesheva's versioned facts-only snapshot generated with @hebcal/core 6.9.2. The app reads one line at a time into a 128-byte buffer, so adding years increases SD usage without materially increasing RAM usage.

Refresh or extend the snapshot with:

python3 tools/generate_holidays.py \
  /path/to/Kesheva/KeshevaShared/holidays-v1.json \
  sd_card/apps_data/kesheva \
  --start-year 2026 --end-year 2035

Accuracy and POC limits

The solar implementation is an independent C port of Kesheva's current NOAA/Spencer geometry and selected-method boundaries. It is intended for demonstration and comparison, not as a substitute for a trusted local luach or rabbinic guidance. Polar dates where a required solar depression is unavailable show an error instead of inventing a time.

The Flipper's built-in font does not render Hebrew, so the device view uses Kesheva's English/transliterated titles. The data generator can be rerun whenever the calendar horizon needs extending.

Verification

Host-side calculation and parser test:

cc -std=c11 -Wall -Wextra -Werror -I. \
  tests/test_core.c kesheva_calc.c kesheva_holiday.c -lm -o /tmp/kesheva_core_test
/tmp/kesheva_core_test

The published POC was also installed and launched with its SD-card data on Momentum firmware, and its four-screen layout was accepted on the physical device. Future builds should still be checked against the exact firmware and hardware on which they will run.

License

Source code is available under the Mozilla Public License 2.0.

About

Offline zmanim and Jewish observance proof of concept for Flipper Zero

Topics

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages