salemlf / hakubun

Cross-platform, third-party Japanese language learning app for use with WaniKani ๐Ÿฆ€๐ŸŠ
GNU General Public License v3.0
25 stars 7 forks source link
Hakubun Logo - Crabigator creature with alligator head and crab arm

Hakubun

A cross-platform, third-party Japanese Study App for Wanikani

Report Bug ๐Ÿ› ยท Request Feature ๐Ÿš€

Android Beta App Android play store icon ยท iOS Beta App Apple Testflight icon

Features ๐ŸŒŸ ยท Contributing ๐Ÿ† ยท Development ๐Ÿ–ฅ๏ธ ยท License ๐Ÿ““ ยท Credits ๐Ÿฅ‡

Overview

Hakubun is a Japanese learning app that can be used with Wanikani, an SRS-based Japanese learning service. Learn and review radicals, kanji, and vocabulary, easily search for subjects, and explore content across levels.

Download the App :zap:

The web version is still being tested, but the beta versions of both Android and iOS are available to download!

Features :star2:

Interface

Reviews and Lessons

Reviews

Privacy Policy/Information Collected

Hakubun uses Logrocket, a log collecting tool, to detect common errors that users are experiencing.

This means the following information may be stored:

The following information is NOT stored and I will never be able to access to it:

Please email me if you have any questions or concerns about how/what data is stored.

Screenshots :camera_flash:

Home

home page subject popover review forecast

Lessons

basic lesson settings advanced lesson settings advanced lesson settings with filters lesson quiz lesson session, card with 'correct' popover after user input lesson summary, shows user what items they learned

Reviews

basic review settings advanced review settings with filters correct review item after user input retrying a review after a bad typo moving to the next item in review queue Viewing subject info in bottom sheet for subject during review dialog with cancel, end session, and wrap up options for when user attempts to leave page before completing all reviews overlay of checkered flag displaying after 'wrap up' is selected summary of reviews items user got correct and incorrect

Subjects

subjects page with radicals, kanji, and vocabulary where you can browse the levels subjects page scrolled down to view vocabulary for level

Search

empty search box with Hakubun crabigator asking user to search for something search box with nonsense input, Hakubun crabigator saying 'no results' while looking distressed search box with 'cat' input and long list of results to choose from

Subject Details

subject details page for vocabulary with user-added meaning subject details page for vocabulary, showing context sentences with translations that can be hidden and shown subject details page for kanji with user entering their own meaning note subject details page for kanji with saved meaning note by user, displaying reading section below

Contributing :trophy:

Contributions are appreciated! See this doc for full details on how to contribute, and the development section for how to build and test Hakubun

Development :desktop_computer:

Formatting and Linting :sparkles:

# Verify files are formatted correctly
npm run check-format

# If formatting issues...
npm run format

# Make sure no linting errors
npm run lint-err-only

# Make sure no TypeScript errors
npm run tsc-check

Building the App :hammer:

Make sure to run npm install before trying the steps below!

Web Version

Building using this method for general development is highly recommended over the iOS and Android methods, it's much easier to debug and inspect changes. Running the app with iOS and Android simulators is only recommended to double-check that the changes you made are compatible with both platforms.

Start server:

npm run start

The app should then be available at http://localhost:5173/

iOS and Android Simulators (with Hot Reload)

If below doesn't work, check that network URL after displayed after running npm run start-exposed matches the URL in the capacitor.config.ts file

Start server in one terminal:

npm run start-exposed

Then run the script for the platform in another terminal:

iOS

npm run ios-live-reload

You can then select the type of iOS device you'd like to use as a simulator

To view debug info (inspect elements, view console output)

Android

npm run android-live-reload
To view debug info (inspect elements, view console output)

Testing

Unit Testing

To run all unit tests:

npm run test

Device Testing for Android, iOS, etc.

This project is tested with BrowserStack

Running Fastlane

Note: it's unlikely you'll need to know this info, just used for GitHub workflows/CICD

Fastlane is a tool used to build and deploy the Android and iOS apps for Hakubun.

Install Dependencies

bundle install

Running Lanes

To run android lanes:

fastlane android <LANE>

To run iOS lanes:

fastlane ios <LANE>

License :notebook:

This project uses GPLv3, a copyleft license. Essentially this means that the source code for this app and all further iterations must stay free and open-source. See license file for complete license information.

Credits :1st_place_medal: