249 words
1 minute
Mal‑Cli: Terminal MyAnimeList Client
2025-06-11

Overview#

mal‑cli is a high-performance terminal interface for the official MyAnimeList API, written in Rust. It provides fast, keyboard-driven navigation across anime and manga lists in a visually sleek TUI using the Ratatui crate. Designed for efficiency, it supports GPU-enhanced terminals and works across Linux, macOS, Windows, and musl environments.

Key Features#

  • Ratatui-based TUI: Modern, widget-driven interface with popups and keyboard navigation.

  • Cross-platform support: GPU rendering (kitty, Windows Terminal 1.22+), compiled for Linux, macOS, Windows, and musl.

  • Keyboard-first UX: Navigate with keys like s, r, Ctrl-p, and Esc; fast paging and popup switching.

  • Easy installation: Available on crates.io, AUR (yay -S mal-cli), Debian and through github releases

Technologies Used:#

  • Rust: for performance and memory safety

  • Ratatui: A Rust TUI crate

  • Tokio async runtime: for API calls and event handling

  • Crossterm: low-level terminal I/O

  • serde / reqwest / tokio-rustls: for HTTP, JSON parsing, and TLS

  • Image support: via ratatui-image for inline graphics on supported terminals

Skills Learned:#

  • Building complex async Rust apps with Tokio and handling event loops

  • Crafting dynamic terminal UIs using Ratatui: popups, list views, threading

  • Cross-platform packaging: managing builds for Linux (AUR), Debian, Windows, and musl

  • Terminal graphics: integrating image rendering in TUI-friendly terminals

  • Keyboard navigation ergonomics: designing intuitive keybindings and popup flows

Challenges and Lessons:#

  • Managing async events and popups required careful structuring to avoid input lag and race conditions

  • Creating AUR/DPKG packages from Rust binaries taught me packaging nuances across Linux distributions

Outcome:#

  • Gained nearly 100 stars ⭐ on GitHub.

  • Featured on Rust forums and r/linux for delivering a sleek, native-like TUI experience

  • Continuously released updates (latest v0.2.1 on 2025‑06‑11), with support for multiple OS targets and easy installation across platforms