Skip to main content
This guide will help you set up your local development environment to start contributing to Yasumu.

Prerequisites

Before you begin, make sure you have the following installed:
  • Node.js (v18 or later recommended)
  • pnpm (v10.19.0 or later) - Yasumu uses pnpm as its package manager
  • Rust and Cargo - Required for building Tauri applications
  • Git - For version control
Yasumu is a monorepo that uses pnpm workspaces and Turbo for efficient builds.

Getting the source code

1

Clone the repository

Clone the Yasumu repository from GitHub:
git clone https://github.com/neplextech/yasumu.git
cd yasumu
2

Install dependencies

Install all dependencies using pnpm:
pnpm install
This will install dependencies for all packages in the monorepo.
3

Run the prepare script

Some packages require additional setup steps. Run the prepare script:
pnpm prepare
This installs Deno dependencies for the @yasumu/tanxium and test packages.

Monorepo structure

Yasumu uses a monorepo structure with the following organization:
yasumu/
├── apps/           # Application packages
│   ├── app/        # Main Tauri desktop application
│   ├── docs/       # Documentation site
│   └── www/        # Main website
├── packages/       # Shared packages and libraries
│   ├── common/     # Shared types and utilities
│   ├── core/       # Client SDK
│   ├── rpc/        # Platform bridge
│   ├── tanxium/    # Backend runtime
│   ├── schema/     # Schema serialization
│   └── den/        # Dependency injection framework
└── pnpm-workspace.yaml
The workspace is configured in pnpm-workspace.yaml:
packages:
  - apps/*
  - packages/*

Available scripts

Yasumu provides several npm scripts for development:

Development

# Run the desktop app in development mode
pnpm app
This starts the Tauri development server with hot reload enabled. It also watches the @yasumu/tanxium package for changes.

Building

# Build all packages
pnpm build

# Build app packages only (excludes www and docs)
pnpm build:app

Code formatting

# Format all code with Prettier
pnpm format
Always run pnpm format before committing your changes to ensure consistent code style.

Generate themes

# Generate theme files
pnpm generate-themes

Bootstrap new packages

# Create a new package using Turbo generators
pnpm bootstrap

Development workflow

1

Create a new branch

Create a new branch for your feature or bug fix:
git checkout -b feat/my-new-feature
2

Make your changes

Edit the relevant files in the appropriate package. The monorepo structure keeps related code organized:
  • For UI changes, work in apps/app
  • For backend logic, work in packages/tanxium
  • For core SDK changes, work in packages/core
3

Test your changes

Run the application to test your changes:
pnpm app
Make sure to test thoroughly and verify that existing functionality still works.
4

Format and build

Before committing, format your code and ensure everything builds:
pnpm format
pnpm build
5

Commit your changes

Commit your changes using conventional commit format:
git add .
git commit -m "feat: add new feature"
6

Push and create PR

Push your branch and create a pull request on GitHub:
git push origin feat/my-new-feature
Then open a pull request at github.com/neplextech/yasumu.

Troubleshooting

Dependency issues

If you encounter dependency issues, try:
# Clean all node_modules
rm -rf node_modules apps/*/node_modules packages/*/node_modules

# Reinstall
pnpm install

Build failures

If builds fail, ensure:
  • You have the latest Rust toolchain installed
  • All system dependencies for Tauri are installed (see Tauri prerequisites)
  • You’ve run pnpm prepare after installing dependencies

Turbo cache issues

If you suspect Turbo is using stale cached builds:
# Clear Turbo cache and rebuild
rm -rf .turbo
pnpm build

Next steps

Now that your environment is set up:

Build docs developers (and LLMs) love