explaingit

tuanle96/zca-desktop

22RustAudience · developerComplexity · 4/5LicenseSetup · hard

TLDR

An unofficial desktop app for the Vietnamese messaging service Zalo, built with Rust and a web-based interface layer, with an optional self-hosted server so messages sync even when your computer is off.

Mindmap

mindmap
  root((zca-desktop))
    What it does
      QR code login
      Multiple accounts
      Messages and stickers
      Local encrypted storage
    Tech stack
      Rust and Tauri
      SvelteKit UI
      SQLite local DB
      Postgres cloud DB
    Cloud backend
      Self-hosted server
      Session management
      S3 media storage
    Risks
      Account ban risk
      Terms of service
      Unofficial only
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Run Zalo as a native desktop app on macOS without keeping a browser tab open

USE CASE 2

Manage multiple Zalo accounts from a single desktop window

USE CASE 3

Self-host a Zalo session relay server so messages arrive when the desktop app is closed

USE CASE 4

Store and search Zalo messages locally with encryption and OS keychain credential security

Tech stack

RustTauriSvelteKitSQLitePostgreSQLS3

Getting it running

Difficulty · hard Time to first run · 1h+

Requires a Rust toolchain and Tauri prerequisites, a signed macOS .app is the only pre-built binary, Windows and Linux require building from source.

Free for personal and non-commercial use only, commercial use requires a separate agreement with the author.

In plain English

zca-desktop is an unofficial desktop client for Zalo, a messaging app popular in Vietnam. It is built with Tauri and Rust for the application core and SvelteKit for the user interface. A signed macOS app is available today, Windows and Linux support is planned. Because this is not affiliated with Zalo or its parent company VNG, using it carries real risk: your account could be rate-limited, suspended, or permanently banned, and it may violate Zalo's terms of service. The local desktop mode covers the core features you would expect from a messaging client. You can log in by scanning a QR code, manage multiple Zalo accounts at once, send and receive text messages, stickers, reactions, and quoted replies, and browse contacts and group conversations. Messages and account data are stored locally in SQLite with encryption. Credentials are kept in the operating system's keychain rather than exposed to the web view layer. An optional self-hosted cloud backend lets users keep Zalo sessions running on a server rather than requiring the desktop app to stay open. The backend is also written in Rust, uses Postgres for storage, and works with S3-compatible object storage for media files. It handles QR login, session management, and encrypted credential storage for hosted accounts. Real-time messages reach the desktop through a server-sent events stream. Several areas are still in progress. Attachment sending in local mode is not yet complete. Media delivery through the cloud path is implemented but needs further hardening. Windows and Linux installers are on the roadmap. Multi-device coexistence with official Zalo clients is designed for but not fully validated. The project is released under the PolyForm Noncommercial 1.0.0 license, meaning commercial use is not allowed without a separate agreement. The README recommends reading a separate disclaimer file before using the app with any account that matters to you.

Copy-paste prompts

Prompt 1
Using zca-desktop as a reference, show me how to add file attachment sending to the local Tauri desktop mode in Rust
Prompt 2
Explain how zca-desktop's self-hosted Rust backend uses server-sent events to stream real-time messages to the Tauri frontend
Prompt 3
Help me configure the zca-desktop cloud backend with a Postgres database and an S3-compatible bucket step by step
Prompt 4
Show me the Rust code pattern zca-desktop uses to store credentials in the OS keychain and keep them out of the web-view layer
Prompt 5
I want to build a similar unofficial desktop client for another messaging service, walk me through the zca-desktop Tauri and SvelteKit architecture
Open on GitHub → Explain another repo

← tuanle96 on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.