Introduction
Obsidian Chess Studio is a comprehensive, open-source chess analysis platform that combines powerful engine integration, advanced game analysis, and intelligent training systems. This guide will help you understand the architecture and get started with development.Technology Stack
Frontend
- React 19 with TypeScript
- Vite for fast builds and HMR
- Mantine UI component library
- TanStack Router for routing
- Jotai for state management
- Zustand for additional stores
Backend
- Rust for performance
- Tauri 2 desktop framework
- Diesel ORM for database
- SQLite for data storage
- Tokio async runtime
- Rayon for parallelization
Chess Logic
- chessops (TypeScript)
- shakmaty (Rust)
- pgn-reader (Rust)
- vampirc-uci for engine communication
- Chessground for board UI
Development Tools
- pnpm package manager
- Biome for linting/formatting
- Vitest for testing
- Cargo for Rust builds
- GitHub Actions for CI/CD
Development Philosophy
Obsidian Chess Studio is built with several core principles:Performance First
- Rust backend handles computationally intensive operations (database queries, PGN parsing, position analysis)
- Aggressive optimizations in release builds (opt-level 3, thin LTO)
- Parallel processing using Rayon for multi-core utilization
- Efficient caching for frequent queries and position lookups
- SQLite indexing for sub-second searches across millions of games
Cross-Platform Support
Built on Tauri 2, the application runs natively on:- Windows (x64, ARM64)
- macOS (Intel, Apple Silicon)
- Linux (AppImage, deb, rpm)
- Android (in progress)
User Experience
- Modern UI with Mantine components
- Responsive design that adapts to screen sizes
- Keyboard-first navigation with customizable shortcuts
- Dark/light themes with full customization
- i18n support with 17+ languages
Open Source Commitment
- GPL-3.0 license ensuring freedom
- Transparent development on GitHub
- Community-driven features and translations
- No telemetry or tracking
Project Structure
Getting Started
Install Prerequisites
- Node.js (v18+)
- pnpm package manager
- Rust toolchain
- Tauri prerequisites
Development Commands
Architecture Overview
Obsidian Chess Studio uses a frontend-backend split architecture:Frontend Responsibilities
- UI rendering and user interactions
- Chess board visualization (Chessground)
- State management (Jotai/Zustand)
- Routing and navigation
- Client-side validation
Backend Responsibilities
- Database operations (SQLite)
- PGN parsing and game import
- Chess engine management (UCI protocol)
- Position search and indexing
- File system operations
- External API integrations (Lichess, Chess.com)
Communication
Frontend and backend communicate via Tauri commands:Key Features to Explore
Multi-Engine Analysis
Simultaneous analysis with multiple UCI engines. See
src-tauri/src/chess/manager.rsDatabase Search
Fast position search across millions of games. See
src-tauri/src/db/search.rsOpening Repertoire
Tree-based repertoire training with spaced repetition. See
src/features/variants/Game Analysis
Automatic mistake detection and ACPL calculation. See
src-tauri/src/dashboard_games_history.rsNext Steps
Building from Source
Platform-specific build instructions
Contributing
Guidelines for contributing code
Testing
Running and writing tests
Translations
Adding new languages
Community
GitHub Discussions
Ask questions and share ideas
Issues
Report bugs and request features
Contributing
Contribution guidelines
