Giter Club home page Giter Club logo

kanji-dojo's Introduction

Kanji Dojo

Learn & practice writing Japanese characters

Features

  • Study kana (both Hiragana and Katakana) and kanji
  • Practice by following JLPT levels or school grades
  • Create your own list to study, more than 6000 characters in total are available
  • Works offline

There is separate repository for dictionaries parser and data here: Kanji-Dojo-Data

Screenshots

Downloads

Get it on F-Droid Get it on Google Play

Or get the latest APK from the Releases Section.

Version comparison

Feature Fdroid Google Play Desktop
Analytics - Firebase, enabled by default -
Other - Play services in app review -

Contributing

  • Pull-Requests are welcome!
  • Before making PR create and discuss the issue
  • Use proper code formatting

Project details

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 handlers
  • presentation - contains UI, navigation logic, screen specific logic and use cases

Typically 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 component
  • (Optional) Content 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

Credits

License

(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/.

kanji-dojo's People

Contributors

syt0r avatar yaroslav-shuliak avatar sl08154711 avatar poussinou avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.