Zap Studio

Motivation

Why Local.ts was created and the philosophy behind local-first desktop software.

Local.ts was created to solve a common problem: building desktop apps with web technologies takes too long to set up right.

The Challenge

Starting a new desktop app project typically means:

  • Days of boilerplate — Setting up Tauri with React, TypeScript, and Rust requires significant configuration
  • Endless decisions — State management, theming, database layer, testing setup... each choice takes time
  • Missing patterns — Most starters are "hello world" examples that don't show production patterns
  • Fragmented docs — Piecing together tutorials for each technology in the stack

We wanted to skip straight to building features.

The Rise of Homemade Tools

AI is fundamentally changing how software gets built. With coding assistants and AI-powered development tools, creating custom applications is now accessible to everyone — not just professional developers.

This shift will lead to a rise in homemade tools:

TrendImplication
Lower barrier to entryMore people building personal tools instead of relying on SaaS
Data ownershipUsers want control over their data, not rental agreements
Custom workflowsGeneric tools can't match purpose-built solutions

When everyone can build their own tools, why trust your data to companies that might:

  • Sell your information
  • Get breached
  • Shut down and lose your data
  • Change pricing or terms

Local-first software puts you back in control.

Own Your Data, Own Your Backups

With local-first apps:

  • Your data stays on your device — No cloud servers to breach
  • You control backups — Export, sync, or replicate however you want
  • No vendor lock-in — SQLite files are portable and open
  • Works forever — Apps don't disappear when companies do

Local.ts makes it easy to build these kinds of tools. Combined with AI assistants, you can create exactly the software you need — with the privacy guarantees you deserve.

Why Local-First?

Local.ts embraces a local-first architecture where your app's data lives on the user's device:

BenefitDescription
PrivacyUser data never leaves their machine unless they choose to sync
Offline-readyWorks without internet connection
PerformanceNo network latency — everything is instant
No server costsShip apps without backend infrastructure
ReliabilityNo dependencies on external services

Local-first doesn't mean "never online." You can add sync, cloud backups, or API integrations when needed. But starting local-first gives you a solid foundation.

Why This Stack?

Every technology in Local.ts was chosen for a reason:

Tauri v2

  • Tiny binaries — 10-20MB vs 150MB+ for Electron
  • Native performance — Uses system webview, not bundled Chromium
  • Cross-platform — macOS, Windows, and Linux from one codebase
  • Security-focused — Rust backend with fine-grained permissions

React + TypeScript

  • Familiar ecosystem — Use the libraries you already know
  • Type safety — Catch errors at compile time
  • Component model — Build UIs from composable pieces
  • Huge community — Answers for every question

Rust Backend

  • Memory safety — No null pointers, no data races
  • Performance — Native speed for file operations, database queries
  • Reliability — If it compiles, it usually works
  • Growing ecosystem — Excellent libraries for desktop development

SQLite + Diesel

  • Embedded database — No server to install or manage
  • Battle-tested — Powers billions of devices worldwide
  • Type-safe queries — Diesel catches SQL errors at compile time
  • Migrations — Version your schema with confidence

What Local.ts Provides

This isn't a minimal starter. It's a production-ready foundation:

Core Features

  • Settings system — Persistent preferences with React integration
  • Theming — Light, dark, and system themes with CSS variables
  • Database layer — SQLite with migrations, models, services, and commands
  • Logging — Structured logs to files and console

Desktop Integration

  • System tray — Background operation with menu actions
  • Notifications — Native OS notifications
  • Autostart — Launch at login option
  • Window state — Remembers size and position

Developer Experience

  • Turborepo — Orchestrated builds across TypeScript and Rust
  • Ultracite — Fast linting and formatting (oxlint + oxfmt)
  • Vitest — Modern testing with coverage
  • Pre-commit hooks — Automated quality checks

Architecture

  • Layered design — Clear separation between frontend, commands, services, and models
  • Type safety — End-to-end types from Rust to React
  • Extensible patterns — Add features following established conventions

Who Is This For?

Local.ts is ideal for:

  • Web developers who want to build desktop apps without learning a new paradigm
  • Teams who need a consistent, well-documented starting point
  • Solo developers who want to ship desktop apps quickly
  • AI-assisted builders who want a solid foundation to extend with AI tools
  • Anyone who values user privacy and data ownership

Getting Started

Ready to build your first local-first desktop app? Check out the Getting Started guide to create your first Local.ts app in minutes.

Edit on GitHub

Last updated on

On this page