Skip to main content
Version: 0.8.0

Monorepo Overview

This monorepo manages multiple applications using pnpm workspaces.

Project Structure

test-learn/
├── apps/
│ ├── tauri-app/ # Desktop application
│ │ ├── src/ # React frontend
│ │ │ ├── components/ # Reusable components (LexicalEditor, etc.)
│ │ │ ├── model/ # WatermelonDB models
│ │ │ ├── pages/ # Route pages
│ │ │ └── utils/ # Utilities (trpc, sync)
│ │ └── src-tauri/ # Rust backend
│ ├── cloudflare-d1-worker/ # Backend API
│ │ └── src/
│ │ ├── index.ts # Hono + tRPC entry
│ │ ├── trpc.ts # tRPC router
│ │ ├── db.ts # D1 helpers
│ │ └── ws-adapter.ts # WebSocket adapter
│ └── docs/ # This documentation
├── pnpm-workspace.yaml # Workspace config
└── package.json # Root scripts

Applications

1. Tauri App (apps/tauri-app)

A cross-platform desktop application.

TechnologyPurpose
Tauri 2Desktop runtime (Rust)
React 19UI framework
WatermelonDBOffline-first database
Lexical.jsRich text editor
Material UIComponent library

Key Files:

  • src/model/db.ts - Database initialization
  • src/model/Customer.ts - Data model
  • src/utils/sync.ts - Sync engine
  • src/components/LexicalEditor.tsx - Rich text editor

2. Cloudflare D1 Worker (apps/cloudflare-d1-worker)

Serverless backend API.

TechnologyPurpose
Cloudflare WorkersServerless runtime
Cloudflare D1SQLite database
HonoREST API framework
tRPCType-safe RPC
YjsCRDT merging

Key Files:

  • src/index.ts - Entry point (REST + tRPC + WebSocket)
  • src/trpc.ts - tRPC router with sync endpoints
  • src/db.ts - Database operations with Yjs merge
  • src/ws-adapter.ts - tRPC over WebSocket

3. Documentation (apps/docs)

This documentation site built with Docusaurus.

Workspace Commands

# Install all dependencies
pnpm install

# Run Tauri app
pnpm --filter tauri-app tauri dev

# Run Worker locally
pnpm --filter cloudflare-d1-worker dev

# Run docs
pnpm --filter apps-docs start

# Build all
pnpm -r build

Package Linking

The Tauri app imports types from the Worker for type-safe tRPC:

// apps/tauri-app/package.json
{
"dependencies": {
"cloudflare-d1-worker": "workspace:*"
}
}

This enables:

import type { AppRouter } from 'cloudflare-d1-worker';

Learn More