What the generated Tauri app contains
Application structure (Rust + React + Vite)
src-tauri/
src/
main.rs # Tauri Builder, command registration
commands/
{domain}.rs # Tauri IPC commands per domain (invoke handlers)
db/
mod.rs # rusqlite connection pool (r2d2)
schema.sql # embedded migration (runs at startup)
models/
{entity}.rs # Rust structs with serde Serialize/Deserialize
services/
{entity}_service.rs # business logic, DB operations
Cargo.toml # rusqlite, serde_json, tauri, r2d2
tauri.conf.json # window config, CSP, updater config
build.rs
src/ # React + Vite frontend
components/
{Entity}Form.tsx # create/edit form per entity
{Entity}Table.tsx # list view with sorting + pagination
pages/
Dashboard.tsx
Settings.tsx # app settings (persisted to local DB)
Onboarding.tsx
ipc/
client.ts # typed invoke() wrappers — no raw fetch()
types.ts # Rust → TypeScript type mirrors
stores/
{entity}Store.ts # Zustand stores for local state
App.tsx
main.tsx
index.html
vite.config.ts
package.json
Data layer (local-first)
rusqlitewithr2d2connection pool — embedded database, no server required- SQL migrations embedded in the binary, run at startup
- Entities fully typed as Rust structs with
serdederive macros - Write-ahead logging (WAL mode) for concurrent read performance
- Backup export to JSON (for user data portability)
IPC contract (type-safe)
- Every Rust command has a matching TypeScript invoke wrapper in
ipc/client.ts - Types are generated from the Rust structs — no
anyin the IPC layer - Commands follow a consistent pattern:
create_{entity},get_{entity},list_{entities},update_{entity},delete_{entity} - Error responses are typed enums, handled in the frontend with discriminated unions
Auth and security
- Local auth with
argon2password hashing (correct choice for desktop — no network auth latency) - Session stored in memory (never written to disk as plaintext)
- Tauri CSP configured to block external script injection
allowlistintauri.conf.jsonscoped to minimum required permissions (filesystem, shell, etc.)
Frontend (React + Vite + Radix UI)
- Vite development server with HMR
- Radix UI primitives + Tailwind CSS
- Onboarding walkthrough on first launch
- Settings page with preference persistence
- React Router for in-app navigation
App Store compliance
tauri.conf.jsonwith correctbundle.identifier,bundle.category, andbundle.targets- EAS-compatible configuration for macOS code signing
- Privacy manifest placeholder (required for macOS App Store submission)
- OTA update config (Tauri Updater) — users see "update available" without manual download
Tests
- Rust unit tests for every service function (
#[cfg(test)]modules) - In-memory SQLite for test isolation
- Vitest tests for React components and IPC mock
Tauri vs Electron — which to pick
Choose Tauri when:
- Binary size matters — Tauri apps are 3–10MB vs Electron's 120–300MB
- Memory usage matters — Tauri uses the OS webview (WebKit/WebView2/WebKitGTK) vs a bundled Chromium
- You want Rust for the backend — stronger memory safety, no GC pauses
- You're building for macOS, Windows, and Linux from a single codebase
- App Store distribution is in scope
Choose Electron when:
- Your team knows Node.js and wants zero Rust
- You need the absolute widest browser compatibility (Chromium everywhere)
- You need Node.js native addons
Archiet generates Tauri. For greenfield desktop apps in 2025, Tauri is the correct default: smaller binaries, lower memory, better security model.
vs other Tauri starters
tauri-apps/create-tauri-app gives you a window and a counter button. Tauri examples give you single-purpose demos.
What neither gives you: your entities, your IPC commands, your data layer, your React pages — the product-specific code that constitutes your actual application.
Archiet generates the complete Tauri desktop app for your specific product. Local database schema, typed IPC layer, React screens, and App Store compliance files — all from your requirements.
CTA
Generate a complete Tauri + React + Vite desktop application from your requirements — free plan, no credit card.
Describe your product, pick Tauri, download a production-ready desktop app in 90 seconds.
Start free at archiet.com.