English | עברית
Zayit is a free app to read, search, and explore Jewish study texts. Built for study: fast search, smooth navigation, clean citations. For review, preparing a lesson, or studying with a partner.
Free. Clear. Efficient.
Zayit is a dream turned useful: a natural, fluid, almost obvious study experience. The project will remain free by principle. Support is welcome and meaningful. It is designed to stay non-commercial. With God's help, Zayit will keep growing without losing its spirit.
Zayit is designed like a digital study hall: stable, fast, consistent. You feel the calm of study: everything works, everything is in its place. The text stays at the center, with respect and without distractions.
Zayit is built on JetBrains technologies, including Compose Desktop and Jewel. Inspired by Google Chrome and IntelliJ IDEA, it offers a professional interface that is fluid and natural, respects study, and does not strain the eyes. Zayit is easy to use: you already know how, no learning curve. Tabs, windows and virtual desktops work the way Chrome does: drag a tab out into its own window, pin it, reopen the last one closed.
Arrange your home page with widgets, the way you arrange your phone: drag them, resize them, pick them from a gallery. Zmanim, the Hebrew calendar, daily study cycles, the molad and Kiddush Levana, the years since the Temple's destruction, a 3D Earth and solar system, Shnayim Mikra, a dictionary, halachic measures, your history, favorites and notes.
One smart bar for everything: books, authors, references and text. Type and go straight to the right place. Powered by Lucene and by Zayit's own embedding model, it finds passages by their words and by their meaning.
- Type a reference like
חולין יבorבראשית א גand land on it. - Books by name or acronym, authors with their own page, all from the same bar.
- Semantic search: find a passage by its meaning, not only its words.
- Even without vocalization, from a partial word or an approximate spelling.
- Clean results by category, each passage read in its context beside the list; a click opens the book right there.
- Find in the whole book, like Ctrl+F.
Library tree, table of contents with its own search, and a clickable book path, like IntelliJ's navigation bar.
The layout adapts instantly: organize the screen the way you want. Show, hide, float or dock the panes, and tailor reading to your study style.
Commentaries: pick your commentators and read them side by side.
Commentaries and targumim together, around the text.
Talmud: Rashi and Tosafot beside the daf, and every verse quoted in the Gemara one click away.
Sources: the origin of a passage opens beside it, and its book in one click.
Book details: author, era, edition and license of every book.
Zayit walks with you through the day: in prayer, in the weekly parasha, and in the lives of the sages.
The smart siddur: every day's tefilot, complete, after your nusach and your place (official builds).
Shnayim Mikra: each verse twice, then its targum.
Author pages: an encyclopedia-style page for each author, with their era, names and all their books.
- Find a passage in seconds, by its words or its meaning.
- Explore the library by book and table of contents without losing the thread.
- Search inside a book to prepare a lesson or review.
- Show commentaries, targumim and sources side by side.
- Work in tabs, windows and virtual desktops, like Chrome.
- Keep bookmarks in folders and a full visit history.
- Highlight words and add your notes, right on the text.
- Copy a clean excerpt with its source, or share the exact place.
- Back up your notes and settings to Google Drive.
- Get automatic updates, the library included.
- Work from the keyboard: Ctrl+F, Ctrl+Shift+T, Alt+Home and more.
- Choose light or dark, your accent color and your fonts.
Zayit aims for quality and consistency: no gimmicks, no noise. Like a digital study desk, everything is there to move forward. Every detail is designed for natural, respectful study. Built to be fast, light, almost magical, it runs even on low-powered machines, fully offline.
Zayit welcomes contributions from the community: bug fixes and features listed in the roadmap.
Note: PRs introducing new features not listed in the roadmap will likely be declined.
Please read CONTRIBUTING.md first. In short: contributions are licensed under the same terms as the project (AGPL v3 + the §7b attribution term), you keep your copyright, you sign the CLA once (the bot asks on your first pull request), and every commit must be signed off (git commit -s, DCO).
Clone the repository with submodules:
git clone --recurse-submodules https://github.com/kdroidFilter/Zayit.gitImportant: You must use JetBrains Runtime 25 (JBR 25) as your JAVA_HOME.
Project structure:
SeforimApp/— Main desktop application (Compose Multiplatform)SeforimLibrary/— Composite build:core(domain models),dao(SQLDelight persistence),generator(data pipeline, JVM only)
Dependency injection (Metro):
- Access the DI graph via
LocalAppGraph.current - Use
@AssistedInject+@AssistedFactoryfor ViewModels
Naming conventions:
*ViewModelfor ViewModels*Viewfor UI components*Statefor UI state data classes*Eventfor user action types
Tab system:
- Each screen must know its
tabId - Use
remember(appGraph, tabId)to create ViewModels - Use
TabStateManagerfor tab-scoped state persistence
Source sets:
- Shared code in
commonMain - Platform-specific code in
jvmMain - Platform types must not leak from
jvmMaintocommonMain
For detailed documentation, see CLAUDE.md and TAB_SYSTEM_README.md.
- Fix P0 and P1 issues
Run the linter and tests:
./gradlew ktlintCheck
./gradlew :SeforimApp:jvmTestThanks to the projects and libraries that make Zayit possible: JetBrains (Kotlin, Compose Desktop, Jewel), Apache (Lucene), and all open source authors. Thanks also to Sefaria and Otzaria for the quality and openness of their databases.
Zayit relies on corpora from Sefaria and Otzaria Library, converted to SQL via SeforimLibrary. Each work may have its own terms: the user agrees to respect them. Zayit and its authors cannot be held responsible for non-compliant use.
The project includes licensed fonts: Rashi Amiti (exclusive to Zayit, with permission from The ImageMaster) and fonts from the Culmus project (their own licenses).
Zayit is free and open source, published under AGPL v3. Sharing is encouraged - it is a good deed.
Additional attribution term (AGPL v3, §7b). Any use, reproduction, modification, or distribution of this software — or of any work derived from it, in whole or in part — must conspicuously display the attribution:
Powered by the technologies that drive Zayit — https://zayitapp.com/
This applies to every form of use of the source code or any portion thereof, including its ingestion, processing, or reuse by an automated system, a machine-learning model, or a large language model (LLM). Any output or derivative produced with the help of such a system that incorporates or is based on this code must carry the attribution above. See the top of LICENSE for the full text.
Zayit is open core. Everything in this repository is free and open source under the AGPL v3 (with the §7b term above), and builds into a complete application.
The official builds (the releases of this repository and of zayitapp.com) also include proprietary modules, which are not open source and live in private repositories:
- The smart siddur (סידור חכם): the tefilot of every day, complete, after the user's nusach and place
(
io.github.kdroidfilter:seforim-siddur, from the private SeforimSiddur repository). Its screen is inSeforimApp/addons/siddur/enabled. - The semantic search: Zayit's own embedding model, which finds passages by meaning and not only by their words
(
io.github.kdroidfilter:seforim-semanticand its model, from the private SeforimEmbedding repository). Its engine is inSeforimApp/addons/semantic/enabled; the model is inside that package, never in the library's database.
A build without access to these modules (any build from this repository by default) leaves them out: the menus do not
show them, the search is lexical only, and everything else works the same (SeforimApp/addons/*/disabled). A
database you generate yourself has no dense vectors either. A build includes the smart siddur when
it can read its package: with siddur.token in ~/.gradle/gradle.properties, the SEFORIM_SIDDUR_TOKEN variable
(CI), or a gh CLI logged in to an account that can see the repository (with the read:packages scope); or from its
sources beside Zayit's, with -Psiddur.local=true (../SeforimSiddur).
The semantic search likewise, with the siddur's token (or semantic.token, SEFORIM_SEMANTIC_TOKEN, gh), or with
-Psemantic.local=true (../SeforimEmbedding/semantic). With that token, SeforimLibrary's generator also embeds the
corpus into the search index's dense vectors (:searchindex:embedCorpus, on an NVIDIA GPU); without it, the index it
builds is lexical only.
With gh, the default login has no read:packages scope; add it once, then check the package is readable (it prints
seforim-siddur) and re-sync Gradle:
gh auth refresh -h github.com -s read:packages
gh api users/kdroidFilter/packages/maven/io.github.kdroidfilter.seforim-siddur --jq .nameContributions go into the open core; the CLA lets them ship in the official builds as well.
Zayit's core is free and open source. For license details, see LICENSE.
Built with love by Elie Gambache ❤️
