Introduction to K-Droid Seforim

Introduction to Seforim

Hello everyone,

Today, I will introduce you to the K-Droid Seforim project.

What is the project about?

The primary goal of the project is to utilize the Sefaria database to develop:

  • A PC/Mobile application that works entirely offline.
  • A website for online use. The web version will only allow browsing the database. It will not include integrated search functionality or synchronization features.

The website will be fully static, making it easy to host on GitHub Pages for a simple and accessible solution.

To learn more about Sefaria, you can visit the following links:

The ultimate goal is to harness the full potential of Kotlin Multiplatform (KMP) to provide an optimal application regardless of the platform used. We will start by developing the PC version.

Technologies Used

The program will be written entirely in Kotlin. Here are the technologies and tools that will be used:

  • Kotlin Multiplatform (KMP) to share logic across different platforms.
  • Compose as the foundation for the user interface (UI):
    • Compose Multiplatform for PC version.
    • Jetpack Compose for the Android version.
    • Kobweb to develop the web version.
  • KosherKotlin for implementing Jewish calendar features.
  • Compose Rich Editor for writing and managing comments.

We will use a modular architecture based on Clean Architecture (CA) combined with Model-View-ViewModel (MVVM) in the KMP part to structure and organize the code effectively and maintainably.

For dependency injection, we will use Koin, and for network requests, Ktor will be our primary choice.

For the user interface:

  • On desktop, we will use Jewel.
  • On Android, we will adopt Material3.
  • Finally, for the web version, we will use the Silk theme from Kobweb.

In the future, when the Compose Fluent UI project is completed, it would be interesting to consider adapting the desktop version of the user interface to Fluent and allow the user to choose their preferred theme. Currently, this project is not stable and encounters serious performance issues, but these improvements should come gradually.

Process Steps

The project will be divided into six major steps:

  1. Define the main features of the application
  2. Database creation
  3. User Interface (UI) development
  4. Search engine design
  5. Adding synchronization features
  6. Application deployment

Main Features

Here are the main features the application should include:

  • Link sharing: Users should be able to share a link to a specific book that redirects to the web version.

  • Update notifications: The application will notify the user if an update is available for the app or the database.

  • Complete offline browsing (Except web)

  • Structured display of comments

  • Advanced search:

    • Search for a specific book
    • Search for text within a book
    • Search across the entire library
  • Annotations and highlights

  • Tab management

  • Favorite saving

  • Numerical calculations (Gematria)

  • Measurement conversions

  • Predefined structured modes:

    • Chnayim Mikra Ehad Targoum
    • Tehilim Yomi
    • Daf Hayomi
    • Hafetz Haim Yomi
    • Hok Leyisrael
    • Houmach Rashi with the Haftara
    • Tur and its commentators
    • Choulhan Aroukh and its commentators
    • Rambam and its commentators
  • Dark mode

  • Jewish calendar features

  • Intelligent Siddur

  • Option to print texts and annotations

  • Recently opened books

  • Automatic startup at system launch (Desktop)

  • Ability to minimize the app to the System Tray (Desktop)

That's all for today! Stay tuned for the next post, where I will detail the creation of the database.