Manji is an mobile application built to help people learning Japanese learn about Kanji.

Overview

Manji

iOS App Store App Store Play Store Visits Badge GitHub style: effective dart

Screen Shot 2020-03-03 at 1 22 57 PM Screen Shot 2020-08-20 at 6 16 26 PM Screen Shot 2020-08-20 at 6 16 43 PM Screen Shot 2020-03-03 at 1 25 18 PM Screen Shot 2020-08-20 at 6 21 33 PM Screen Shot 2020-08-20 at 6 21 48 PM Screen Shot 2020-08-20 at 6 16 50 PM Screen Shot 2020-04-19 at 5 59 00 PM Screen Shot 2020-04-19 at 6 04 58 PM Screen Shot 2020-04-20 at 8 01 24 PM

On the surface, Manji is just a Japanese dictionary, but it can actually do more than that:

  • Handwritten kanji recognition
  • Image kanji extraction
  • Kanji card
  • Kanji quiz generated dynamically based on selected groups of kanji

Therotically, Manji is cross-platform since it is powered by Flutter, but since I want to maximize the elegance of its user experience and also because I am an Apple fanboy to some degree, I chose to focus on the iOS side. I have already forgotten when the last time was that I debugged and tested on Android but feel free if you want to make it work and optimize for Android.

Getting Started

  1. Because the dictionary file exceeds the size limit of Github, git-lfs is used for storing the dictionary file. So make sure you have installed git-lfs.
  2. Clone this project and run git-lfs fetch --all in the project root folder.
  3. Create a service account.
  4. Fill up the credential as shown below and save it as google_api_credentials.dart and move to Manji/lib/resource/.
import 'package:googleapis_auth/auth_io.dart';

final credentials = ServiceAccountCredentials.fromJson(r'''
{
  "type": "service_account",
  "project_id": "",
  "private_key_id": "",
  "private_key": "-----BEGIN PRIVATE KEY-----\n-----END PRIVATE KEY-----\n",
  "client_email": "",
  "client_id": "",
  "auth_uri": "",
  "token_uri": "",
  "auth_provider_x509_cert_url": "",
  "client_x509_cert_url": ""
}
''');
  1. Setup Firebase for your project.
  2. (iOS) Download your GoogleService-Info.plist and move it to Manji/ios/Runner/.
  3. (Android) Download your google-services.json and move it to Manji/android/app/.
  4. Run the project using flutter run.
You might also like...

Pneumonia and COVID-19 detection Mobile App from Chest X-rays using CNN based deep learning classifiers.

image_classification A new Flutter project. Getting Started This project is a starting point for a Flutter application. A few resources to get you sta

Dec 7, 2021

Gas station flutter - Mobile app created for learning purpose simulating a gas station prices comparizon

Gas station flutter - Mobile app created for learning purpose simulating a gas station prices comparizon

gas_station A new Flutter project. Getting Started This project is a starting po

Jan 25, 2022

Beginner level chat app I built while learning Flutter

Beginner level chat app I built while learning Flutter

Chat App Chat with your friends, family, and anyone else you want to chat with! Live Coding Video on YouTube (Part 1) Live Coding Video on YouTube (Pa

Aug 4, 2021

A weather app built to learn how to use Canvas and Animation in Flutter.

A weather app built to learn how to use Canvas and Animation in Flutter.

Weather Quick Disclaimer I removed my private OpenWeather API key from the repo, if you want to get the weather forecast use your own in the openweath

Dec 21, 2022

An application of learning outcomes from the Mastering Flutter 2.0 class: Building Travel and Aircraft Applications Buildwithangga

An application of learning outcomes from the Mastering Flutter 2.0 class: Building Travel and Aircraft Applications Buildwithangga

An application of learning outcomes from the Mastering Flutter 2.0 class: Building Travel and Aircraft Applications Buildwithangga

Aug 29, 2022

An E-Learning application

An E-Learning application

Apr 20, 2022

The application helps the patient to follow up on medication schedules, and each patient has his own profile. The application is connected to Bluetooth to help the patient's dependents follow up on the patient.

spoon_medicines A new Flutter application. Getting Started This project is a starting point for a Flutter application. A few resources to get you star

Nov 27, 2021

Todo app - an application maintaining user's todo list. Made to learn state management

todo_app A new Flutter project. Getting Started This project is a starting point for a Flutter application. A few resources to get you started if this

Mar 15, 2022

Scaape, a first-of-its-kind social hangout app that makes organizing group hangouts with people who share similar interests as simple as shooting fish in a barrel.

Inspiration Humans are social beings, hence socializing and meeting new people is an impulsive part of our nature, but due to this recent pandemic whi

Jan 10, 2022
Comments
  • Unable to run the app locally due to database not copying properly to my device

    Unable to run the app locally due to database not copying properly to my device

    Hey! I've been trying to build the app locally (parts of which led to #15) but there is one issue that I haven't been able to resolve yet and you might be able to help me with this.

    Whenever I run the app (the version I've built myself) on my smartphone (or an Android emulator) I get the following exception:

    Unhandled Exception:
    DatabaseException(no such table: Kanji (code 1 SQLITE_ERROR): ,
    while compiling: SELECT * FROM Kanji) sql 'SELECT * FROM Kanji' args []}
    

    After checking the local database that gets installed on my device I can confirm that its pretty much empty (like a newly initialized sqlite DB) so this error is kinda obvious. My first thought was something along the lines of "Oh well, maybe I did something wrong with the git LFS step" but sadly the database that I have on my PC in data/dictDB.db is correct (as in it does have the required tables/data). So my assumption is that somehow it doesn't seem to copy the SQLite database that I have in data/ to my device (nor the emulator) and I think it does instead initialize a new one, which then causes the prior exception due to the data not being present.

    Full "flutter run -d DEVICE_NAME" log (click to expand)
    Launching lib\main.dart on DEVICE_NAME in debug mode...
    Running Gradle task 'assembleDebug'...
    Running Gradle task 'assembleDebug'... Done                        62.5s
    √ Built build\app\outputs\flutter-apk\app-debug.apk.
    Installing build\app\outputs\flutter-apk\app.apk...                13.5s
    I/flutter (30066): copying
    I/flutter (30066): opening
    I/flutter (30066): upgrading
    I/flutter (30066): [{type: table, name: android_metadata, tbl_name: android_meta
    data, rootpage: 3, sql: CREATE TABLE android_metadata (locale TEXT)}]
    E/flutter (30066): [ERROR:flutter/lib/ui/ui_dart_state.cc(186)] Unhandled Except
    ion: DatabaseException(no such table: Kanji (code 1 SQLITE_ERROR): , while compi
    ling: SELECT * FROM Kanji) sql 'SELECT * FROM Kanji' args []}
    E/flutter (30066): #0      wrapDatabaseException (package:sqflite/src/exception_
    impl.dart:11:7)
    E/flutter (30066): <asynchronous suspension>
    E/flutter (30066): #1      SqfliteDatabaseMixin.txnRawQuery.<anonymous closure>
    (package:sqflite_common/src/database_mixin.dart:406:30)
    E/flutter (30066): <asynchronous suspension>
    E/flutter (30066): #2      BasicLock.synchronized (package:synchronized/src/basi
    c_lock.dart:33:16)
    E/flutter (30066): <asynchronous suspension>
    E/flutter (30066): #3      SqfliteDatabaseMixin.txnSynchronized (package:sqflite
    _common/src/database_mixin.dart:346:14)
    E/flutter (30066): <asynchronous suspension>
    E/flutter (30066): #4      DBProvider.getAllKanjis (package:kanji_dictionary/res
    ource/db_provider.dart:131:15)
    E/flutter (30066): <asynchronous suspension>
    E/flutter (30066): #5      KanjiBloc.getAllKanjis.<anonymous closure> (package:k
    anji_dictionary/bloc/kanji_bloc.dart)
    E/flutter (30066): <asynchronous suspension>
    E/flutter (30066):
    I/flutter (30066): opening
    E/flutter (30066): [ERROR:flutter/lib/ui/ui_dart_state.cc(186)] Unhandled Except
    ion: DatabaseException(no such table: Kanji (code 1 SQLITE_ERROR): , while compi
    ling: SELECT * FROM Kanji) sql 'SELECT * FROM Kanji' args []}
    E/flutter (30066): #0      wrapDatabaseException (package:sqflite/src/exception_
    impl.dart:11:7)
    E/flutter (30066): <asynchronous suspension>
    E/flutter (30066): #1      SqfliteDatabaseMixin.txnRawQuery.<anonymous closure>
    (package:sqflite_common/src/database_mixin.dart:406:30)
    E/flutter (30066): <asynchronous suspension>
    E/flutter (30066): #2      BasicLock.synchronized (package:synchronized/src/basi
    c_lock.dart:33:16)
    E/flutter (30066): <asynchronous suspension>
    E/flutter (30066): #3      SqfliteDatabaseMixin.txnSynchronized (package:sqflite
    _common/src/database_mixin.dart:346:14)
    E/flutter (30066): <asynchronous suspension>
    E/flutter (30066): #4      DBProvider.getAllKanjis (package:kanji_dictionary/res
    ource/db_provider.dart:131:15)
    E/flutter (30066): <asynchronous suspension>
    E/flutter (30066): #5      KanjiBloc.getAllKanjis.<anonymous closure> (package:k
    anji_dictionary/bloc/kanji_bloc.dart)
    E/flutter (30066): <asynchronous suspension>
    E/flutter (30066):
    Activating Dart DevTools...                                         7.6s
    Syncing files to device DEVICE_NAME...                                   140ms
    

    I've invested some time trying to figure out why this doesn't work, but sadly couldn't find a solution yet and I hope that you might know how to resolve this :).

    bug 
    opened by atomicptr 11
  • Endless loading

    Endless loading

    when the application starts, it is always loaded. Android. when debugging, the last message he got stuck on E/ (17598): [ZeroHung]zrhung_get_config: Get config failed for wp[0x0008] E/ (17598): [ZeroHung]zrhung_get_config: Get config failed for wp[0x0008]

    opened by Taverz 7
  • Improve

    Improve "Getting started" section in the README

    Super trivial changes, I removed some ignored files that you probably accidentally checked in and expanded the getting started section a bit. I've never used Firebase before so it was a bit of a struggle (and some Googling) to get it running. I've added some extra documentation for that (also included some Android specific bits) which should make this step a bit easier for someone else who has never done any Firebase stuff before :).

    opened by atomicptr 1
  • Siri suggestions doesn't work anymore.

    Siri suggestions doesn't work anymore.

    Siri suggestions does not seem to work any more. I will either drop the whole flutter_siri_suggestion package or create my own branch to further investigate the issue.

    bug 
    opened by Livinglist 0
Worney - help people that want to know what time have been made on work time

Worney - help people that want to know what time have been made on work time

Kesse 1 Mar 10, 2022
App to learn how to code with a lot of great courses and ideas of projects to do, focused on productivity and fast learn. 💻

skoola A new Flutter project. Getting Started This project is a starting point for a Flutter application. A few resources to get you started if this i

Batista Tony 3 Oct 29, 2021
Drishti is an open-source cross-platform mobile application project at Incubate Nepal that incorporates Machine Learning and Artificial Intelligence

Drishti is an open-source cross-platform mobile application project at Incubate Nepal that incorporates Machine Learning and Artificial Intelligence to help visually impaired people recognize different currency bills and perform daily cash transactions more effectively. We plan to expand Drishti to other applications like Short Text and Document Reading in the future.

Drishti Nepal 23 Oct 8, 2022
A Deep Learning Based Attendance System is a mobile application that aims to make it easier for lecturers to check the attendance status of students which are attending the course.

Attendance System / Flutter App A Deep Learning Based Attendance System is a mobile application that aims to make it easier for lecturers to check the

Merthan Kavak 11 Oct 24, 2022
This is a bot built with Dart lang which helps you people a simple task and have fun

TeleBot This is a bot built with Dart lang which helps you people a simple task and have fun Command supported /jokes - get a random joke ?? /insult -

Rexford Asamoah 10 Oct 25, 2022
An App Built using flutter using which we can share books with people around us !!

?? Book-Donation-App ?? An App Built using flutter using which we can share books with people around us !! Features: ✨ A book Sharing App. This app he

Aswin Gopinathan 49 Dec 22, 2022
A unique flutter application aimed at helping people getting their vitals using Photoplethysmography and Computer Vision

A unique flutter application aimed at helping people getting their vitals using Photoplethysmography and Computer Vision Current Goals: Use the camera

Smaranjit Ghose 37 Dec 27, 2022
Plaso Connect is an application which acts as a one-stop solution where the people requiring blood plasma/oxygen can directly find and contact the donors and healthcare units as per their requirements

PLASO CONNECT - The Lifeline A one-stop platform for COVID relief resources -- Connecting patients with Plasma donors and oxygen suppliers. Built for

Niloy Sikdar 11 Oct 28, 2022
Weight Loss Tracker is an application dedicated to people who want to dump or maintain weight

Weight Loss Tracker is an application dedicated to people who want to dump or maintain weight. It allows you to keep an eye on your progress and pursue your weight goals.

Senior Mobile Developer 5 Jan 3, 2023
It is a simple group chat application made with flutter back-end by Firebase. People can chat like a community chat.

flash_chat A new Flutter project. Getting Started This project is a starting point for a Flutter application. A few resources to get you started if th

Moideen Rafih P A 4 Aug 7, 2022