No description
  • Rust 50.4%
  • TypeScript 36%
  • CSS 4.1%
  • Kotlin 2.7%
  • Python 2.1%
  • Other 4.7%
Find a file
Tux bda59cf015 Add scripts/android.sh to automate Android build, sign & release
One helper for the Android build flows that were manual multi-step
incantations:

- apk     — build + sign a universal release APK, print the adb install line
- aab     — build + sign the Play .aab, copy it and the R8 mapping.txt to the
            Desktop as <App>-<version>{,-mapping.txt}
- symbols — build native libs with symbols (CARGO_PROFILE_RELEASE_STRIP=false,
            no Cargo.toml edit) and zip them to the Desktop
- release — aab + symbols, the full Play upload set

Auto-detects the NDK and build-tools, forces a JDK <= 21 (so a system
default JDK 25 can't break Gradle), and prompts once for the keystore
password — passed to apksigner/jarsigner via the environment, never on the
command line. Keystore/alias/Desktop are overridable via TALEA_* env vars.

Wrapped as just recipes (android-apk/-aab/-symbols/-release) and documented
in docs/DEVELOPMENT.md. shellcheck-clean.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-02 15:05:08 +02:00
.cargo Add SQLite persistence (sqlx) and typed Tauri command surface 2026-05-29 21:42:29 +02:00
.claude Scaffold Talea: Tauri 2 + React workspace with pure-Rust core 2026-05-29 16:50:45 +02:00
.sqlx Add summary accounts (read-only multi-account overview, 1.4.0) 2026-06-02 09:46:45 +02:00
.vscode Scaffold Talea: Tauri 2 + React workspace with pure-Rust core 2026-05-29 16:50:45 +02:00
core Add summary accounts (read-only multi-account overview, 1.4.0) 2026-06-02 09:46:45 +02:00
docs Add scripts/android.sh to automate Android build, sign & release 2026-06-02 15:05:08 +02:00
frontend Release 1.4.1 2026-06-02 13:14:48 +02:00
ios-widget Fix iOS widget bundle structure for App Store 2026-06-01 10:56:33 +02:00
scripts Add scripts/android.sh to automate Android build, sign & release 2026-06-02 15:05:08 +02:00
src-tauri Release 1.4.1 2026-06-02 13:14:48 +02:00
tauri-plugin-budgetwidget Fix Android launcher icon and make widget reconfigurable 2026-05-31 12:34:30 +02:00
tauri-plugin-statusbar Add home-screen budget widget (Android + iOS) 2026-05-31 09:22:56 +02:00
.gitattributes Scaffold Talea: Tauri 2 + React workspace with pure-Rust core 2026-05-29 16:50:45 +02:00
.gitignore Ship iOS widget and fix biometric lock for 1.1.0 2026-06-01 10:22:35 +02:00
Cargo.lock Release 1.4.1 2026-06-02 13:14:48 +02:00
Cargo.toml Release 1.4.1 2026-06-02 13:14:48 +02:00
CHANGELOG.md Release 1.4.1 2026-06-02 13:14:48 +02:00
CLAUDE.md Add SQLite persistence (sqlx) and typed Tauri command surface 2026-05-29 21:42:29 +02:00
justfile Add scripts/android.sh to automate Android build, sign & release 2026-06-02 15:05:08 +02:00
LICENSE Add MIT LICENSE and a justfile (incl. CRAP coverage recipe) 2026-05-30 00:38:18 +02:00
README.md docs: size the README banner to 640px, centered 2026-06-02 14:18:48 +02:00

Talea

Talea

A local-first, cross-platform budget app. Your money data lives on your device in a local SQLite database — no account, no cloud, no sync server in the loop. Talea targets Android and iOS, with the desktop build used for day-to-day development.

Status: actively developed and in testing (iOS via TestFlight, Android). See CHANGELOG.md for the release history.

What it does

  • Monthly cashflow ledger with carry-over — for the selected month: income, expenses, and available to end of month; a surplus or overspend carries into the next month, per account. Swipe between months.
  • Accounts with a fixed currency and opening balance — plus summary accounts, a read-only type that combines several same-currency accounts into one overview (combined budget, merged entry list and stats, widget target).
  • Entries (income/expense, optional note + category) with full CRUD, and same-currency account-to-account transfers.
  • Categories — a global, descriptive list (emoji / preset icons).
  • Recurring rules — weekly / monthly / yearly + every-N, with effective-dated amounts and single-occurrence skip or edit.
  • Statistics — per-month expenses broken down by category.
  • Budget ring + home-screen widget — an abstract health ring on Android & iOS; the actual figures stay in-app.
  • Optional biometric app lock (mobile).
  • Backup & restore to your own Nextcloud over WebDAV (optional, manual).
  • 12 languages, auto-detected from the device and switchable in Settings.

Why "local-first"

  • The database is the source of truth and it sits on the device.
  • The app is fully functional offline.
  • Sensitive figures stay on-device, optionally behind a biometric lock.

Architecture

Talea is a Cargo workspace with a strict separation between pure domain logic and the platform shell:

talea/
├── core/        → pure-Rust domain + money math. No Tauri, no IO, no SQL.
│                  Fully unit-tested. The "what the app means" layer.
├── src-tauri/   → the Tauri shell. Bridges `core` to the frontend via
│                  commands, owns persistence (SQLite via sqlx) and platform
│                  integration. The "how it runs on a device" layer.
└── frontend/    → React + TypeScript (Vite). The UI. Talks to the shell
                   only through Tauri's typed `invoke` boundary.

The dependency direction is one-way and enforced by crate boundaries:

frontend ──invoke──▶ src-tauri ──calls──▶ core
                         │
                         └── sqlx ──▶ SQLite (on device)

core knows nothing about Tauri, the filesystem, or SQL — the budgeting rules and money arithmetic stay testable in isolation and portable if the shell ever changes. The full rationale, the budgeting model, and the schema live in docs/DESIGN.md.

Prerequisites

  • Rust (stable, ≥ 1.80) with cargo.
  • Node.js ≥ 20 and npm.
  • Tauri 2 system dependencies for your platform — see the Tauri prerequisites.

Getting started

# Install frontend dependencies
npm --prefix frontend install

# Run the desktop dev build (starts Vite, then the Tauri shell)
cargo tauri dev

# Production build
cargo tauri build

Documentation

  • Product model & design decisionsdocs/DESIGN.md
  • Building, on-device testing, signing & release, troubleshooting, plus the quality gates, the sqlx offline cache, and how to reset local data → docs/DEVELOPMENT.md
  • Release historyCHANGELOG.md

License

MIT.