Skip to content

Latest commit

 

History

History
247 lines (160 loc) · 11.7 KB

README.md

File metadata and controls

247 lines (160 loc) · 11.7 KB
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 ⚡

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

Features 🌟

Interface

  • Use swipe gestures or keyboard shortcuts to submit or retry answers
  • Cross-platform, web-based app with native-like interactions and animations
  • Light or dark theme options

Reviews and Lessons

  • Review or learn by subject
    • Radical, kanji, vocabulary, kana vocabulary
  • Select specific items to review or learn
  • Batch size selection
  • Shuffle or sort by SRS stage, level, available date, date updated
  • Option to filter subjects by current level
  • Go to next item on correct answer
  • Typo tolerance

Reviews

  • Back to back ordering: change card order in queue
    • Meaning then reading
    • Reading then meaning
    • Disabled (shuffled)
  • Wrap-up mode: finish up the reviews you started on, unreviewed are removed from queue

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:

  • Username
  • Errors encountered
  • User actions in app (for example: how often user visits a page)

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

  • API tokens
  • User location data
  • User's name or other sensitive data

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

Screenshots 📸

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 🏆

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 🖥️

Formatting and Linting ✨

# 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 🔨

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)
  • If you've never done this before, you'll likely have to the make sure "Show features for web developers" is enabled under Safari's Settings

    Safari settings displaying Show features for web developers setting
  • Open Safari and click the iOS simulator for Hakubun under Develop -> iOS device you chose as simulator -> IP address displayed. If this is not displayed, make sure you followed the previous step. If it's still not displayed, opening Xcode can sometimes make it appear

    selecting iOS simulator inspecting iOS simulator

Android

npm run android-live-reload
To view debug info (inspect elements, view console output)
  • In Chrome, go to chrome://inspect/#devices

  • An address should be available under "Remote Target", you can click on "inspect" to bring up a web inspector. This can be used to inspect elements and view console output

    remote targets in Chrome web inspector in Chrome for Android device

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 📓

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 🥇