Skip to content

Development

Prerequisites

Setup

# Clone the repo
git clone https://github.com/sorenwacker/nodus.git
cd nodus

# Install dependencies
npm install

# Start development server
make dev

Commands

Command Description
make dev Start development server
npm test Run tests
npm run lint Lint code
npm run build Build frontend
npm run tauri build Build for production
cargo test Run Rust tests (in src-tauri/)
cargo clippy Lint Rust code

Project Structure

nodus/
├── src/                    # Vue frontend
│   ├── canvas/             # Canvas rendering (PixiJS + DOM)
│   ├── components/         # Vue components
│   ├── composables/        # Vue composables
│   ├── stores/             # Pinia state management
│   ├── llm/                # LLM integration
│   └── lib/                # Utility libraries
├── src-tauri/              # Rust backend
│   └── src/
│       ├── database.rs     # SQLite operations
│       ├── watcher.rs      # File system watcher
│       └── commands.rs     # Tauri commands
└── docs/                   # Documentation

Tech Stack

Layer Technology
Desktop Tauri v2
Frontend Vue 3 + TypeScript
Canvas PixiJS + DOM hybrid
Database LibSQL (SQLite)
Math Typst WASM

Logging

The application uses a structured logging system with namespace prefixes.

Log Levels

Environment Default Level Shows
Development info info, warn, error
Production warn warn, error

Namespaces

Logger Prefix Usage
appLogger [Nodus] General application logs
storeLogger [Store] Pinia store operations
canvasLogger [Canvas] Canvas rendering
agentLogger [Agent] LLM agent operations

Usage

import { storeLogger } from '../lib/logger'

storeLogger.debug('Verbose debugging info')  // Only in development
storeLogger.info('General information')       // Development only
storeLogger.warn('Warning message')           // Always shown
storeLogger.error('Error occurred', error)    // Always shown