Mudrashram Ledger

A private, encrypted desktop application for recording and managing client spiritual guidance sessions. Its local-first architecture keeps sensitive data on the device.

Client
Spiritual teacher, private practice — California
Engagement
Custom software, design through delivery
Platform
Native macOS desktop application
Stack
Tauri v2 · Rust · React · TypeScript · SQLCipher · Cloudflare R2
Mudrashram Ledger dashboard showing recent encounters and follow-up tracking

The problem

A spiritual teacher in California needed to log and track client sessions, milestones, and follow-ups across a growing private practice. Every available CRM, note app, and practice-management service required storing deeply personal client records in a third-party cloud. That did not meet the practice's confidentiality requirements.

The requirements were unusual and strict: all data stays on the practitioner's own machine, encrypted at rest, with no accounts, no telemetry, or server anywhere in the architecture. The tool also needed a clear interface suited to daily use.

The approach

We designed Mudrashram Ledger as a local-first desktop application. There is no backend. The entire data layer is an AES-256 encrypted SQLite database (SQLCipher) that lives on-device and is unlocked by the practitioner's password. Client records stay on-device. The application can run without a server account or subscription.

The local-first design needed to account for two recovery scenarios: what happens if the password is lost, and what happens if the machine dies. We solved the first with an offline recovery key system: a one-time key generated at setup that can reset the password without any server involvement. We solved the second with encrypted backup and restore, including automatic safety snapshots before risky operations like imports.

The build

We chose Tauri v2 with a Rust core because it produces a smaller installed app with lower memory use than Electron. Encryption, file handling, and database access run in Rust. The interface uses React + TypeScript.

  • Encrypted local database: SQLCipher, AES-256, unlocked per-session
  • Client profiles: with a milestone timeline per client
  • Follow-up dashboard: upcoming and overdue follow-ups at a glance
  • CSV import: with validation and a preview step for historical records
  • Backup & restore: encrypted exports plus automatic safety snapshots
  • Recovery key system: offline password reset, no server required

Secure delivery

Delivery uses a private download link. The signed installer is stored in Cloudflare R2 and served through a token-gated Cloudflare Worker at a branded download domain. The client receives a branded email with a private, expiring download link. The installer is not published through an app store, public URL, or file-sharing service.

The outcome

The practitioner now manages session records, milestones, follow-ups, and historical imports in one purpose-built tool. The native app has a secure update path, no monthly software fee, and no runtime server dependency.