Skip to content

ray-pH/wenbun

Repository files navigation

WenBun Icon

Wenbun (文文)

Wenbun is an open-source app for learning Chinese characters through interactive writing practice and spaced repetition. It combines flashcard-style review with stroke-by-stroke training and will be available on desktop, web, and mobile (Android, iOS).

"Wenbun" combines the Mandarin (wén) and Japanese (bun) readings of 文, meaning "character" or "writing."

Naming it Wenbun might be shooting ourselves in the foot. It pretty much commits us to supporting Japanese too.

Features

  • Character Writing Practice: Practice stroke order with real-time feedback using hanzi-writer.
  • Spaced Repetition Scheduling: Uses the FSRS algorithm to optimize review timing.
  • Preloaded Vocabulary Decks: Includes HSK vocabulary lists.
  • Previously Studied Cards: Tag and prioritize cards you've already studied in another system for faster integration.

Roadmap

  • Add support for Japanese Kanji (JLPT levels)
  • Add Chinese dictionary lookup
  • Manual/Freeform stroke input (no guidance)

Community

  • Join us on Discord
  • Backend server repo: wenbun-server — currently only used for profile data sync.
  • Core functionality (learning, reviews, writing practice, and scheduling) is client-side and does not require the backend.

Development Credits

Tech Stack

  • Web: Svelte
  • Desktop/Mobile: Tauri

Contributing & Development

  • Stay Connected: Follow updates, join discussions, give feedback, and report bugs on our Discord server.
  • Develop:

Clone with submodules

git clone --recurse-submodules https://github.com/ray-pH/wenbun.git

Install dependencies:

npm install

Web version:

npm run dev

Desktop/Mobile (Tauri):

npm run tauri dev

Troubleshooting

npm run dev fails with ENOSPC: System limit for number of file watchers reached, watch <SOME_DIR>

You can either increase the number of watchers or ignore the directory in vite (example with static/wenbun-assets):

diff --git a/vite.config.js b/vite.config.js
index ddedcb4d..ae269c02 100644
--- a/vite.config.js
+++ b/vite.config.js
@@ -50,7 +50,7 @@ export default defineConfig(async () => ({
       : undefined,
     watch: {
       // 3. tell vite to ignore watching `src-tauri`
-      ignored: ["**/src-tauri/**"],
+      ignored: ["**/src-tauri/**", "**/static/wenbun-assets/**"],
     },
   },
 }));

Deployment Note For Publishing

For Android builds, ensure the correct version name is set in src-tauri/gen/android/app/tauri.properties. You may need to update this file manually before deployment.

About

Learn Chinese characters with interactive stroke practice and spaced repetition

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors