Skip to content

CalmTed/bible-by-heart

Repository files navigation

Bible by heart

Another app for learning Bible passages but with some personalization

Whats different from analogus apps:

  • stroke counter
  • address learning tests for black box learning method
  • ukrainian interface language (add your if you want)
  • customizable Bible translation
  • offline-first and free (syncying options might be paid in future to support work)

Whats the same:

  • passages list(add, remove, edit)
  • reminders notification
  • difficulty levels

Roadmap

  • asyncly get local storage
  • navigation, state management
  • interface l10n support
  • list manipulation (add, remove, edit, archive, search, filter)
    • address selector
    • add, remove
    • edit text, set tag(archive)
    • search (text, address, tag)
    • filter any parameter array (address, catagory, selectedLevel)
    • sorting
    • edit address
  • address testing view (generate tests, get answers, float wrong answers to the end, result screen) v0.0.4
  • more levels, open level by learning, level select v0.0.5
    • l1, l2, progressing, level switcher
    • l3, l4, l5
  • save stats (tests result, stroke, weekly progress) v0.0.6
    • stroke counter
    • weekly progress
  • settings v0.0.7
    • level 3 fix(sort,skip button, save right words)
    • show wrong answer (l1, l2, l4, l5)
    • state converter from v0.0.6 to v0.0.7
    • settings layout (app/user settings)
      • components: top user data
      • settings menu item
        • checkbox
        • select
        • open modal
      • settings modal
        • menu list
        • just text
        • items list
    • app settings: - [x] language, (later)reminders(enabled, auto, same time, list), - [x] theme, - [x] haptic, - [x] about, - [x] legal, (later)feedback, - [x] devmode, (later) train modes, (later) compress old stats(>3month), - [x] leftSwipeTag
    • user settings: - [x] translations array(and default one), (!change with API not localy: name, email), (!we have phone local)timezone, (! stored on server sessions), (later) request data removal, (later) remove local data
    • edit passage translation (custom with autocomplete from other passages data)
    • filter by translation (if there are several different)
    • adding passages from prepared list in the most popular translations(ESV,UBT)
      • copyright page in settings
      • limit length to 500 verses per passage
    • delete tests history after deleting passage
    • update all passages with translation that was deleted to "other/null"
    • add tag to filter on adding to passage, remove if it was last
    • change dateStarted/finished to array, update converter accordinly, set weekly graph to show time spent
  • [-] customizable daily reminder, more stats v0.0.8
    • reminders list: time, days
    • fix reminders permisions, fix back swipe state eracing, fix all tests enabled bug(fix check if all tests are finiched to finish session)
    • fix level 4 wrong scroll wrapping, fix level 5 no scroll wrapping
    • different train modes (fast, infinite/timed, all due to, hardest/most errored) & modes customazation(name, sort, tags: included/excluded)
    • state converter:
      • change triesDuration from dateStarted and dateFinished
      • remove all testData from history
      • remove unfinished
      • remove it before finishing session
    • publish as it is for now b.c. we dont really care about state model now, other parts will be just rendered
    • futureprofing
      • update dependencies
      • protect all critical funcions with try catch
        • storing
        • redusing
        • app rendering
        • initials
        • generate tests
      • everyday save backup
      • on crash propose to open backup and contact developer
    • "reimagine" level picker(disable level picker in fixed level tests & remove angle arrow)
    • ask to fetch translation if textfiled is not empty
    • after 2 errors propose to downgrade level and restart only one task
    • export to csv and import (export state in json for developing)
    • [-] activity to receive intents(sharing data) from other apps: get just address(define language) or get text with address(define lanuage too)
      • [-] parse text from most popular apps
      • [-] open modal to ask, show parsing result (add as is, edit address, edit text, select another translation(add if nedded))
      • [-] add to passages and open list
    • edit passage due to, sort main train mode by it
  • register and login (confirm email or google/facebook login) v0.0.9
    • all tests list, grouping by date and session
    • passage statistics in passage editor
      • most common errors list with error numbers
      • total tries tested, total time spent
      • most often wrong addresses
    • statistics:
      • overal learned
      • global progress (learned passages score versesNumber*level)
      • relative progress (score relative to last month)
      • show different stats on home screen (LATER)
        • stroke first two weeks (LATER)
        • general progress 2 weeks to 1 month (LATER)
        • relative progress when stroke is more then 1 month, exept round numbers of other stats:1 year stroke or 100 verses learned... (LATER)
      • different finish screen label: presistent learner, perfect tester(no errors), error buster(a lot of errors), grower(some maxLavel updates) (LATER)
        • propose to add new passages if all of them are 5 level, or to stop adding them if too much errors everyday (LATER)
    • updateMessages list: show unread modal on startup or show all in settings
    • login form and action with API
    • feedback form for authorirized users or telegram bot
    • change data safety settings and privacy policy
  • sync + custom sync(without need for registration) v1.0.0
    • autosync & manualsync action
    • custom sync and documentation web page for it
    • about page and donate(premium) button
      • connect payment service
    • screen readers labels

Other ideas:

  • accomplishments
  • friends feature / feed
  • groups functionality(group stats, group passages, group quests)
  • web app

Dev. rules

  1. use setState(reduce()) for state manupulation don't use just useState()
  2. use navigateWithState for screen changing dont use just navigate EXEPT goback
  3. use createT(langCode) and t(word) for l10n dont use unlocalized text in UI

Using

Installing requirements:

  • (for Windows) expo tools and packages from package.json
  • (for Linux) it will install from package.json

Cloning:

  • run git clone https://github.com/CalmTed/bible-by-heart.git

Instaling:

  • run yarn install

Running:

  • run npm start to start expo (a - run on android, r - reload...)

Building:

  • eas build --platform android --profile [preview | production] to build apk(preview) or aab(production) file (need exp/eas account)

About

Bible by heart react native app

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published