Seeing "n/a" means there is no image associated with a mnemonic. No longer deployed.
This creates and displays a dictionary of essential Japanese words. It displays words next to their definition, hiragana spelling, and kanji composition. Next to each kanji, it displays possible kanji meanings and the kanji's radical. Next to each radical, it displays possible radical meanings and a visual mnemonic to see where in nature the radical could stem from.
This dictionary could have many uses but I created it to aid me in my quest to learn Japanese.

Demo.mp4
These instructions are only for the SQLite version.
Install all dependencies:
pip3 install -r requirements.txt
Create the databases:
python3 words.py
python3 kanji.py
python3 radicals.py
Run the application:
flask run
The architecture depends on 3 databases:
- One for 8474 words, their spelling, and their definitions.
- A second for 1234 kanji, their meanings and their radicals.
- And a third for 319 radical characters, their meanings, and their mnemonics.
Note that there are only 214 unique radicals, but a radical may have more than one character associated with it (different versions of the same radical).
The backend is managed using Flask.
The application is hosted using Gunicorn and it's made available online using NGINX.
All components are deployed on an EC2 Ubuntu T2 instance.
Change ( characters for ( in the radical meaning column.
Styling the tables.
Adding a search bar.
Add a romanji spelling column for words. Use the romkan library to render the column.
Think about a computer vision algorithm to identify the non-radical "building blocks" of kanji.
Get a custom domain name.
Make Gunicorn and NGINX bootup routines, so if the instance restarts for any reason, the app will go back online.
I developed this using the Kanji alive data, which is publicly available on https://github.com/kanjialive/kanji-data-media.
