Learn & practice writing Japanese characters
There is separate repository for dictionaries parser and data here: Kanji-Dojo-Data
Or get the latest APK from the Releases Section.
To run the app install Java 17 or higher. Download jar from Github Releases for your platform, open it with double click or use command java -jar <filename>.jar
Feature | Fdroid | Google Play | Desktop |
---|---|---|---|
Analytics | - | Firebase, enabled by default | - |
Other | - | Play services in app review | - |
Used libraries: Compose Multiplatform
, Kotlin Coroutines
, Koin
, SqlDelight
Most parts of the app are implemented in the core
multiplatform module. The app
module only contains some specific parts for the Fdroid and Google Play versions (flavors)
Under the main package path there are 2 different packages:
core
- contains app's general logic for features like repositories, databases, app state managers and handlerspresentation
- contains UI, navigation logic, screen specific logic and use casesTypically a feature under core
package is placed in a separate package and consist of an interface and implementation.
The presentation
package contains common UI and screen infrastructure. A single screen contains:
<ScreenName>Contract
- an interface with screen's view model and screen state data<ScreenName>ViewModel
- handles screen's logic<ScreenName><Action>UseCase
- components that handle some specific action, invoked by view model<ScreenName>Screen
composable that handles navigation and communication between UI and view model<ScreenName>UI
- composable function that represents UI, it depends only on data so it can be covered by previews<ScreenName>Module
- a koin module that defines how to provide all screen specific components.
Note: View models should be additionally registered in androidViewModelModule
since on android they're additionally wrapped by a platform specific componentContent
interface for screens that can be replaced in flavors, like SettingsScreenContract.Content
There is a single Koin's module
for all features under core
package, but there are also separate modules for a platform (platformComponentsModule
) and flavor (flavorModule
) specific features. All screens have their own koin modules
(c) 2022-2023 Yaroslav Shuliak
This is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this app. If not, see https://www.gnu.org/licenses/.