Giter Site home page Giter Site logo

kana_plus_plus's Introduction

KWriting

About the app

The app is intended to teach beginners to learn Japanese Hiragana and Katakana alphabets through writing. For this, a technique was used that uses words (usually the names of things) to learn how to write in Japanese.

The use of images of things was also used to directly associate what the user is writing in Japanese with the visual representation, thus avoiding directly associating the translated word. That's why words like adjectives, actions, verbs are not used, as they are more difficult to represent visually by a static image.

As an extra, the learner will gain an initial vocabulary.

For more information, access the app on the Play Store: https://play.google.com/store/apps/details?id=com.kana_plus_plus

Printscreen

Name changed

The project was originally called Kana++, but due to Play Store developer policy, repeated special characters are not accepted. Therefore, the app is called KWriting. No creativity moment when creating this name 😐.

About the project

This app was built in order to apply the techniques learned about Flutter and also about software architecture. In addition, the application was sent to the Play Store in order to learn the entire process from creating the idea to sending the app to the Play Store.

The project was built with Flutter 2.5.3 and Dart 2.14.4 with focus on Android (it wasn't implemented for iOS, but is pre-prepared to include code to deploy for iOS).

To build the app, we used VSCode, Inkscape (images), python (automatic manipulation of .svg data to generate points) and flutter coverage (chocolatey + lcov + perl).

If you want to follow the next steps of the project, go to GitHub: https://github.com/jttboi/kana_plus_plus/issues

Understanding Project Architecture

Domain layer

models: contains entities of the app. repositories: contains repositories interface. services: contains services interface. utils: contains constants used in the app.

Infra layer

datasources: contains bridge to access database and file. repositories: contains repositories implementation. services: contains services implementation.

Presentation layer

feature_folder: it is the folder of feature of the app. shared: it is the folder of shared data used in any part of the presentation layer.

bloc/cubit: contains files of state management of BloC pattern. notifiers: contains files of state management of Change notifier + Provider. controllers: contains files of old controller of MVC pattern. enums/view_models: contains enums and view models used in presentation layer. pages: contains pages of screen app. widgets: contains widgets to used in any part of page.

Other files

test/: contains tests of the app. l10n/: contains texts for internationalization. analysis_options.yaml: it is the configuration file of the Lint. l10n.yaml: it is the configuration file of the Internationalization. pubspec.yaml: it is the configuration file of Flutter project.

Extra instructions

Project execution

  • Git clone or download the project.

  • After getting the project, enter the project folder from the terminal and type flutter pub get to get the packages and update the project.

  • Don't forget to change the android:value="ca-app-pub-xxxxxxxxxxxxxxxx~yyyyyyyyyy" content in the android/app/src/main/AndroidManifest.xml file. If not, the project will not deploy to mobile/emulator. This value is the app ID generated on the adMob website. For more information, go to: https://flutter.dev/ads https://pub.dev/packages/google_mobile_ads

  • Then use flutter build apk command to generate the apk. I recommend using VSCode or Android Studio to run the project. With some of them it's easier to create Android emulators or have access to DevTools for better debugging.

Update app icon

To update the app icon, the package flutter_launcher_icons is used.

Android

First you need to create 3 pngs:

  • assets/icons/app_icon_background.png
  • assets/icons/app_icon_foreground.png
  • assets/icons/app_icon.png

After that, run in the terminal:

flutter pub run flutter_launcher_icons:main

The package will automatically generate the necessary images inside the android folder.

More information at: Android Adaptive Icon

Extra: if you want to modify the splash screen that is shown when opening the app, modify the file android/app/src/main/res/drawable/launch_background.xml.

More information at: Splash Screen Flutter

iOS

To update the app icon for iOS, you need to uncomment in pubspec.yaml the line ios: true.

Note: Read Note to see how to apply the app icon design on iOS.

After that, run in the terminal:

flutter pub run flutter_launcher_icons:main

Using flutter coverage on Windows

  • Install the chocolatey. Don't recommended to install as administrator, because it will need permissions to use chocolatey every time.

  • Isntall the lcov.

  • Install the perl. If it is not on PATH, add the C:/PERL_PATH/perl.exe in User variables and System variables. You can find the perl folder on C:/.

  • after installation, go to project folder on CMD and execute the coverage.

flutter test --coverage ./lib
  • after, use the command perl to generate html.
perl C:\CHOCOLATEY_PATH\chocolatey\lib\lcov\tools\bin\genhtml -o coverage C:\FLUTTER_PROJECT_PATH\coverage\lcov.info
  • open the index.html file with the favorite browser and it will show the coverage of the project.

License

License copied from terms of use

The software is open source. Its code is shared at https://github.com/jttuboi/kana_plus_plus. All content specifically available in the repository can be used under the MIT License.

The images used as the images of the words and the images of the hiraganas and katakanas are my property. They are not allowed to be used, modified or shared in other projects without my permission. That's why it's not even shared in the project.

The image strokes of the hiragana and katakana syllables were taken from KanjiVG and these images are on Creative Commons Attribution-Share Alike 3.0 license.

The syllable points were taken from the SVG images of KanjiVG and these images are over Creative Commons Attribution-Share Alike 3.0 license.

The overview information is taken from Wikipedia Hiragana en, Hiragana pt Katakana en, Katakana pt.

The licenses for the fonts used are mentioned within the project and can be seen at https://github.com/jttuboi/kana_plus_plus/tree/master/assets/fonts.

The icons were taken from Google fonts and those non-existent icons were created by me and can be seen at https://github.com/jttuboi/kana_plus_plus/tree/master/assets/icons.

The word data information were mostly collected through Jisho.

Terms of use and privacy policy

https://tuboi-studios.github.io/kwriting_terms_of_use_and_privacy_policy/

kana_plus_plus's People

Contributors

jttuboi avatar

Watchers

 avatar  avatar

Forkers

duffrind

kana_plus_plus's Issues

animar as imagens dos kanas no word detail

na tela que mostra os detalhes da palavra, ele mostra os kanas, porém elas precisam ser animadas para mostrar o passo a passo de como devem ser desenhadas.

adicional: adicionar o Hero para word id também.

Modificar o modo de reconhecimento do writer

retirar os undo stroke e clear stroke.

o modo de reconhecimento deve ficar no formato:

  • quando ir desenhando um traço, o traço deve ir aparecendo, se passa pela região certa do traço, ele deve ir destacando com uma cor mais forte, se passa fora da região, ele deve ficar bem clarinho.

  • apos tirar o dedo, se boa parte do traço está errado (ex: menos de 90 ou 95%), o usuario precisa desenhar novamente o mesmo traço

  • deve ter um feedback (tipo um chacoalhão) quando o traço foi desenhado errado. se foi desenhado certo, detaca o próximo traço.

  • deve ter um contador de traços desenhados corretamente

  • deve ter um contador de traços desenhados erroneamente

  • deve ter um contador de kana que teve algum traço desenhado erroneamente

o show hint deve mostrar por etapas, ex: deve mostrar qual desenhar o primeiro traço, após o usuario desenhar, e for correto, mostra o segundo traço, e assim por diante.
se o show hint está desabilitado, não mostra nada até ele começar a desenhar o traço.

bloquear split screen

o app não suporta tamanhos quadrados ou pequenos, pois necessita de pelo menos 2 areas, sendo que uma seria para imagem e os kanas e o outro a area de desenho.

deve bloquear o splitscreen ou adicionar o modo fullscreen para evitar quebra de tela

Adicionar novas palavras

Adicionar novar palavras/imagens que contenham os kanas não inclusos ainda.

よ を
ぐ げ ざ ぜ ぢ づ ば
ぱ ぺ ぽ
きゃ にゃ ひゃ みゃ りゃ ぎゃ ぢゃ びゃ ぴゃ しゅ ちゅ ひゅ みゅ りゅ じゅ ぢゅ びゅ ぴゅ ちょ にょ ひょ みょ りょ ぎょ ぢょ ぴょ
っか った っば っぱ っし っち っび っぴ っく っす っつ っぶ っぷ っせ って っべ っぺ っそ っと っぼ っぽ
ハ ミ ウ ヌ ユ ヨ ヲ
ヂ ズ ヅ ゲ ゾ
キャ チャ ニャ ヒャ ミャ リャ ギャ ヂャ ビャ キュ シュ チュ ヒュ ミュ リュ ギュ ジュ ヂュ ビュ キョ チョ ニョ ヒョ ミョ リョ ギョ ジョ ヂョ ビョ
ピャ ピョ
ヴャ スャ ズャ テャ デャ フャ ウャ ヴュ スュ ズュ テュ デュ フュ ウュ ヴョ スョ ズョ テョ デョ フョ ウョ
ッサ ッタ ッキ ッシ ッピ ッス ッケ ッセ ッテ ッぺ ッソ ッポ
イィ イェ ヴァ ヴィ ヴ ヴェ ヴォ スヮ スァ スィ スゥ スェ スォ ズヮ ズァ ズィ ズゥ ズェ ズォ ツァ ツィ ツェ ツォ テァ テゥ テェ テォ デァ ディ デゥ デェ デォ トヮ トァ トィ トゥ トェ トォ
ドヮ ドァ ドィ ドゥ ドェ ドォ ホゥ フェ リィ リェ ウァ ウィ ウゥ ウェ ウォ クヮ クァ クィ クゥ クェ クォ グヮ グァ グィ グゥ グェ グォ ムヮ ムァ ムィ ムゥ ムェ ムォ

Refatoração da arquitetura de software

Refatorar a arquitetura do projeto, deixando clean architecture, mas separando em packages e refazer a regra de negócio para concentrar nos change notifier.

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.