zudo-text

検索したい単語を入力

いつでも検索バーを開ける

Development

This guide covers setting up a development environment for zudotext.

Prerequisites

  • Rust — Install via rustup. The Tauri backend compiles natively.

  • Node.js — v20 or later

  • pnpm — v10+ (the project uses packageManager field in package.json)

  • Xcode Command Line Tools — Required for macOS native compilation (xcode-select --install)

Getting Started

Clone the repository and install dependencies:

git clone <repo-url>
cd zudo-text
pnpm install

Start the development server (launches both the Rust backend and Vite frontend with hot-reload):

pnpm tauri:dev

This runs cargo tauri dev inside tauri-app/, which:

  1. Compiles the Rust backend

  2. Starts the Vite dev server on port 37461

  3. Opens the app window with the WebView pointing to the dev server

On first run, Cargo downloads and compiles all Rust dependencies. Subsequent starts are much faster.

Key Commands

CommandDescription
pnpm tauri:devStart dev (Rust + Vite hot-reload, port 37461)
pnpm dev:mockFrontend-only dev with mock backend (port 1421)
pnpm writing:devWRITING app dev entry (the renderer ROOT and LEAFs embed)
pnpm writing:buildWRITING app production build
pnpm dev:adminAdmin renderer dev server
pnpm tauri:buildBuild production .app bundle (thin-launcher ROOT)
pnpm storybookUI component development (port 6006)
pnpm checkLinting
pnpm startDocumentation site dev server

Config-Driven Architecture

zudotext is config-driven — different configurations produce different app instances. An app instance is defined by:

  • Workspace binding~/.config/zudotext/<appname>/config.json (schema v2, {"workspace":{"id":…}}); an unbound instance routes to onboarding and nothing is scaffolded locally

  • Settings (.zudotext.settings.json) — a document inside the workspace: color scheme, editor config, shortcuts, frameset layout, header pins

  • Pins — configurable content directories

  • Content directories — notes (inbox/) and archives (archives/) at the workspace root

The shared @takazudo/app-defaults package defines the config schema, default values, and validation.