QR Studio Ultra is a privacy-first QR and barcode studio built with Svelte, Tauri, and a native Rust rendering engine.
It is designed for people who want more than a basic black-and-white QR utility. The app focuses on polished visual output, practical payload generation, offline use, and native-quality exports without sending data to outside services.
Android build artifacts are kept outside the repo. The source here is the canonical project state.
If you want to run the project locally right away:
npm install
npm run tauri dev
If you only want the web UI during development:
npm run dev
Current packaged Android builds in this workspace:
| Build | Best for |
|---|---|
| external Android package export | device testing and release sharing |
Desktop development runs through Tauri with:
npm run tauri dev
QR Studio Ultra currently supports:
| Area | Included |
|---|---|
| QR styling | solid fills, multi-stop gradients, custom module shapes, styled eyes |
| Logos | upload, crop, center placement, size control, opacity control |
| Scanner | QR, Code 128, EAN, UPC, ISBN, Code 39, PDF417 and more; square targeting UI, animated scan line |
| Payloads | URL, Wi-Fi, vCard, email, SMS, phone, geo, event, social, crypto and more |
| Encryption | passphrase-protected QR payloads (ChaCha20-Poly1305, AES-256-GCM), local-only processing |
| Crypto | wallet profiles, richer payment URI generation, optional amount/label/message |
| Platforms | Tauri desktop workflow, Android builds, native save/share integration |
| Rendering | Rust-backed QR generation and logo compositing |
Most QR apps are either too plain, too intrusive, or too careless about quality.
QR Studio Ultra takes a different route:
The app uses a Rust backend for the heavy rendering work and a Svelte frontend for fast interaction and UI flexibility.
The QR image itself is rendered in Rust instead of relying entirely on a browser-only drawing path.
That gives the project tighter control over:
Recent rendering work also moved toward cleaner direct-module sampling, which noticeably improved edge quality and reduced visual artifacts.
Center logos are handled with a crop-first workflow in the frontend and then composited natively in Rust.
Current logo features include:
The scanner is not limited to QR codes.
The app can request a wider set of barcode formats through the Tauri barcode scanner plugin, and the scanner UI includes:
Supported Barcode Formats:
The crypto flow has moved beyond a single address field.
It now supports:
QR Studio Ultra includes a built-in engine for creating and reading encrypted QR codes.
Key security features:
QRU1: prefix, allowing the app to automatically detect and prompt for passphrases when scanning.The app is meant to cover two use cases that usually get split across multiple tools:
That is why the project mixes:
The result is intentionally a little more ambitious than a standard generator.
fast_qrimageThe following scripts are available in package.json:
| Script | Description |
|---|---|
npm run dev |
Starts the Vite development server for the web UI. |
npm run build |
Builds the frontend for production. |
npm run preview |
Previews the production build locally. |
npm run check |
Runs Svelte-check and syncs Svelte-Kit. |
npm run check:watch |
Runs Svelte-check in watch mode. |
npm run test |
Runs frontend tests using Vitest. |
npm run test:watch |
Runs frontend tests in watch mode. |
npm run test:rust |
Runs Rust backend tests using Cargo. |
npm run tauri |
Wrapper for the Tauri CLI. |
To run the app in development mode (Desktop):
npm run tauri dev
To build the app for production (Desktop):
npm run tauri build
| Variable | Description | Required |
|---|---|---|
TODO |
Identify any required environment variables for CI/CD or specialized builds. | No |
Note: For Android builds, sensitive information is typically handled via keystore.properties (see keystore.properties.example).
The frontend uses Vitest for unit and component testing.
npm run test
The Rust backend uses standard Cargo tests.
npm run test:rust
Key areas of the repo:
src/
Frontend source code (Svelte 5).src/routes/+page.svelte: Main app UI, state, QR options, overlays, scanner UX, wallet flow, and encryption/decryption views.src-tauri/
Native backend and configuration (Tauri/Rust).src-tauri/src/lib.rs: Native commands, QR rendering, image composition, mobile/desktop save logic.src-tauri/tauri.conf.json: Tauri app configuration.src-tauri/gen/android: Generated Android project files and Android-specific patches.static/
Static assets for the frontend.docs/
Project documentation and screenshots.You will want:
Install dependencies:
npm install
npm run dev
npm run tauri dev
npm run check
npm run build
Best for:
Command:
npm run tauri dev
Best for:
Example:
npx tauri android build --target aarch64
Example Android build command:
npx tauri android build --target aarch64
This repo has also been used to produce:
armeabi-v7a build for older devicesIf you are working on Android packaging, also inspect the generated Android files in src-tauri/gen/android, because this project includes local fixes and compatibility tweaks there.
This project has needed a few practical Android-side adjustments for real builds, including:
Those changes are part of why the repo includes generated Android project files instead of treating them as completely disposable.
QR Studio Ultra is trying to sit in a useful middle ground:
That means flashy ideas are welcome, but they need to earn their place by staying usable.
The strongest future work for this project usually falls into one of these buckets:
That combination is where the app feels most distinctive.
Contributions are welcome.
Start here:
CONTRIBUTING.mdIf you are proposing rendering changes, scanner changes, or new styling systems, please read that guide first so the work lines up with the project’s priorities.
This project is released under the MIT License.