Skip to main content

Shipped a real-world Tauri app: cross-platform IELTS exam prep (open source, MIT)

· 3 min read

Shipped a real-world Tauri app: cross-platform IELTS exam prep (open source, MIT)

Hey r/tauri,

Wanted to share a Tauri app I actually shipped rather than another todo demo: IELTS Mastery Hub, a desktop app for practicing the IELTS English exam. TypeScript frontend, Rust core, MIT licensed, running on Windows, Linux, and macOS.

Demo video:

Repo: https://github.com/open-lingua/ielts-mastery-hub

What it does: timed reading sections in a split-screen layout with auto-scoring, listening sections with audio playback, a dual-pane writing editor with AI evaluation against the official scoring criteria, and a dashboard tracking scores over time. Free, no account, runs locally.

Tauri-specific notes, since that's why you're here:

  • Why Tauri: users keep this open for 2–3 hour mock exam sessions. An Electron-sized footprint for a study tool was a non-starter — the system webview approach won on both bundle size and memory.
  • What lives in Rust vs. the frontend: exam session state, timers, scoring, and persistence are all in the Rust core. The timer being owned by Rust rather than a JS interval was a deliberate call — no drift, no pausing when a render stalls, and scoring logic isn't sitting in devtools waiting to be edited. The frontend is basically a view layer over commands.
  • IPC granularity was the hardest design decision. Started chatty (a command per interaction), which got noisy fast. Ended up event-driven: Rust emits state transitions, the frontend subscribes. Much cleaner, and it made the "resume an in-progress exam" feature almost free.
  • Audio in the listening section is where webview differences bit hardest — WebKitGTK vs. WebView2 behavior around playback and preloading needed real workarounds.
  • CI packaging for three targets (plus signing) took longer to get right than several features did. Happy to share the workflow config if anyone's fighting that.

Install:

macOS / Linux:

curl -fsSL https://open-lingua.github.io/ielts-mastery-hub/install/install.sh | sh

Windows (PowerShell):

irm https://open-lingua.github.io/ielts-mastery-hub/install/install.ps1 | iex

Or build from source:

git clone https://github.com/open-lingua/ielts-mastery-hub.git

Docs: https://open-lingua.github.io/ielts-mastery-hub/docs/intro/

Disclaimer: independent, non-commercial, educational project. Not affiliated with or endorsed by the British Council, IDP Education, or Cambridge Assessment English — IELTS is a registered trademark of its respective owners. Practice content is AI-generated for educational purposes and may not be 100% accurate.

The codebase is open if you want to poke at how the command/event layer or the bundling config is set up. Would genuinely welcome feedback on the IPC design — I suspect there's a more idiomatic pattern I've missed. AMA about the Tauri side in the comments.