Deep dive into Pawn Appétit's architecture, APIs, development setup, and deployment processes. For developers and advanced users.
Pawn Appétit uses a modern hybrid architecture combining web technologies with native performance.
Modern web-based user interface built with React, TypeScript, and Vite
src/ directory
High-performance native backend powered by Rust and the Tauri framework
src-tauri/ directory
UCI (Universal Chess Interface) communication layer
src-tauri/src/engine/
Game storage and retrieval system with indexing
src-tauri/src/db/
How data flows through the application from user interaction to result display.
User performs action in the React frontend
Frontend calls Rust backend via Tauri commands
Rust backend processes the request
Results sent back to frontend for display
Complete guide to setting up your development environment for contributing to Pawn Appétit.
Node.js 18+ and pnpm package manager
Clone: git clone https://github.com/Pawn-Appetit/pawn-appetit.git
Install dependencies: pnpm install
Start development: pnpm tauri dev
Build for production: pnpm tauri build
pnpm tauri dev
Hot reload for both frontend and backend
pnpm tauri build
Optimized build with installers
pnpm test
Frontend and backend test suites
pnpm format
Format code with Prettier and Rustfmt
Core Tauri commands that bridge the frontend and backend functionality.
PGN file parsing, import/export, and file system management
read_games(path: string) → Game[]
write_game(path: string, game: Game) → Result
convert_pgn(input: string, format: string) → string
get_file_metadata(path: string) → FileMetadata
Chess engine communication and analysis
get_best_moves(position: string, options: EngineOptions) → BestMoves
analyze_game(game: Game, depth: number) → Analysis
get_engine_config(path: string) → EngineConfig
stop_engine(engine_id: string) → Result
Game storage, search, and retrieval
create_database(path: string, name: string) → Database
search_position(fen: string, db: string) → PositionStats
get_games(db: string, filter: GameFilter) → Game[]
delete_duplicated_games(db: string) → number
Platform-specific features and system information
memory_size() → number
is_bmi2_compatible() → boolean
open_external_link(url: string) → Result
get_platform_info() → PlatformInfo
Pawn Appétit uses TypeScript bindings automatically generated from Rust code using Specta and Tauri Specta.
Generated files: src/bindings/generated.ts contains all type definitions and command signatures. This ensures type safety between frontend and backend.
Understanding how Pawn Appétit is built from source code to distributable packages.
Vite builds the React application
dist/ directory with optimized web assets
Cargo builds the Tauri backend
Native executable for target platform
Platform-specific installers are generated
Ready-to-distribute installation packages
Multiple deployment strategies for different use cases and environments.
Automated releases via GitHub Actions
Configured in .github/workflows/release.yml
Manual building for development and testing
Use pnpm tauri build for production builds
Containerized building for consistency
Dockerfile provided in repository root
Join our development community and help make Pawn Appétit even better.