To work with the project you need android-studio >= 3.3
, you can get it here.
For building and running the app, your either need to download a virtual Android device image (this can be done from within the Android Studio) or connect a physical device (with developer options enabled and USB debugging turned on) via USB cable.
- Write short and informative commit messages. Mention the issue you're working on (begins with
#
), e. g.implement something(#0)
. How to Write a Git Commit Message. - Follow a successful Git branching model.
- Kotlin coding conventions + Java google style guides and oracle.
- Also look around each time you do something new to see, how such a thing was formatted and implemented before.
- Set up Android Studio proper Kotlin code style
editor -> code style -> kotlin -> set from -> predefined -> Kotlin style guide
. - Apply autoformatting to edited files each time before commit.
There is a handy DSL that allows writing content in a typesafe way.
- All app content should be placed into
com.github.braillesystems.learnbraille.res
package. - Use
DslTest.kt
file as DSL tutorial.
Information correctness should be checked in compile-time or during app initialization runtime as much as possible. If some additional info is needed, do not hardcode it. Just request the new DSL feature via GitHub Issues.
Adding rules, prevent lambda of capturing context that will be invalid next time the fragment entered, so use Fragment.getString
outside of lambdas.
- Create lessons by
lessons
delegate. - Create a course in
CourseBuilder
and add lessons to it.
Always use com.github.braillesystems.learnbraille.res.content
value to get materials, they are indexed here in a proper way.
- Add a new deck tag to
DeckTags
. - Map tag to deck's predicate in
DecksBuilder
. - Map deck's tag to user-visible string in
deckTagToName
.
- Create materials by one of delegates:
markers
orsymbols
. - Add created materials to the
contens
(materials
delegate). - Add to
inputSymbolPrintRules
andshowSymbolPrintRules
, or toinputMarkerPrintRules
andshowMarkerPrintRules
.
Symbols that are not from a particular alphabet and do not exist on the classical American keyboard should be treated as special and be added via enum class
.
New materials can be marked as known by default in knownMaterials
(known
delegate).
Database scheme is described here.