Skip to content

Development

Prerequisites

  • Node.js 22+
  • pnpm 9.15+
  • Rust (for the desktop client)
  • meson and ninja, on Linux and macOS only (the desktop client statically links WebRTC's echo canceller, which is built from source; it is not built on Windows)
  • System dependencies for Tauri on your platform

Setup

bash
git clone https://github.com/ItsAshn/kizuna.git
cd kizuna
pnpm install

Running

Server

bash
pnpm --filter @kizuna/server dev

The server starts on http://localhost:3000 by default (configurable via PORT in .env).

Desktop Client

bash
pnpm --filter @kizuna/desktop dev

Opens the Tauri app with hot-reload for the React frontend. To run just the web frontend without Tauri:

bash
pnpm --filter @kizuna/desktop vite

Shared Package

The shared package builds automatically as a dependency. To run tests:

bash
pnpm --filter @kizuna/shared test

Tech Stack

ComponentTechnology
Server runtimeNode.js 22
HTTP frameworkHono v4
WebSocketSocket.IO v4
WebRTC SFUmediasoup v3
DatabaseSQLite (better-sqlite3)
AuthJWT + bcryptjs
ValidationZod v3
Desktop shellTauri v2 (Rust)
FrontendReact 18 + Vite 5
State managementZustand v4
Routingreact-router-dom v6
Monorepopnpm workspaces + Turborepo

Environment Variables

See .env.example in the repository root for a complete reference of all available environment variables.