Skip to content

Bible search and read web app written in Crystal

License

Notifications You must be signed in to change notification settings

balain/bcv-kemal

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

bcv-kemal

Bible search and display web app

Built using Crystal (programming language), Kemal (web framework), SQLite (database)

Features

  • Interlinear search results
  • Full text search: English, Hebrew, and Greek
  • Provide your own Bible content
  • No server required - uses sqlite database (local)
  • Good performance - compiled code
  • Query Greek and Hebrew by root/lemma
  • Search for works with specific part of speech
  • Strong's definitions - both popup and inline
  • See difference, union, and intersection across prior search results
  • Uses Bootstrap 5

Installation

  1. Install Crystal - https://crystal-lang.org
  2. Install Kemal - https://kemalcr.com
  3. Clone this repo
  4. Rename .env-example to .env & update values to match your environment
  5. Install dependencies - shards install
  6. Install just - https://github.com/casey/just (optional)
  7. Install watchexec - XYZ (optional)
  8. Set up the database - instructions pending

Dependencies

Crystal - required

Optional

  • just
  • watchexec

Usage

Debug - Run

  1. Run just watch (or crystal run src/bcv-kemal.cr)

Production - Run

  1. Run just prod (or KEMAL_ENV=production crystal run src/bcv-kemal.cr --release -O3)

Production - Build

  1. Run just build-prod (or KEMAL_ENV=production crystal build src/bcv-kemal.cr -o bcv-kemal --release -O3)

TODO

  • Change SQL to parameterized queries
  • Document database schema
  • Document .env fields
  • Document content ETL
  • Capture performance metrics

Data Sources

Text

Converting USFX XML Files

Converter

Format

Warnings and Notices

  • Queries are parameterized - avoids SQL injection
  • Kemal server is http, not https
  • There is no support for separate users or authentication - e.g. query history is shared across all clients
  • Content: Abide by all copyrights and other content restrictions

Development

TODO: Write development instructions here

Contributing

  1. Fork it (https://github.com/balain/bcv-kemal/fork)
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create a new Pull Request

License

MIT

Copyright © 2025

See LICENSE for full license content.

Contributors

  • John - creator and maintainer