Another app for learning Bible passages but with some personalization
- 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)
- passages list(add, remove, edit)
- reminders notification
- difficulty levels
- 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
- use setState(reduce()) for state manupulation don't use just useState()
- use navigateWithState for screen changing dont use just navigate EXEPT goback
- use createT(langCode) and t(word) for l10n dont use unlocalized text in UI
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)