An unofficial multi-board manager for Excalidraw - manage multiple drawing boards without losing access to old ones.
- Multiple Boards: Create, rename, duplicate, and delete drawing boards
- Auto-Save: Your drawings are automatically saved locally
- Cross-Platform: Works on Windows, macOS, and Linux
Before building, ensure you have the following installed:
- Rust: Install from rustup.rs
- Node.js: Version 24+ from nodejs.org
- Visual Studio Build Tools: Install "Desktop development with C++" workload from Visual Studio Installer
The project includes helper scripts that set up the Visual Studio environment automatically:
# Install dependencies first
npm install
# Run in development mode
npm run tauri tauri# Build for production
npm run tauri build
# Build MSIX
pnpm run tauri:windows:build --arch "x64,arm64" --runner pnpmFor deterministic system-test runs, you can enable test mode:
TAURI_TEST_MODE=1enables deterministic import/export paths and test data isolation.TAURI_TEST_RUN_ID(optional) isolates each run into its own data subdirectory.TAURI_TEST_EXPORT_PATHandTAURI_TEST_IMPORT_PATH(optional) override deterministic file paths.
Windows PowerShell example:
$env:TAURI_TEST_MODE = "1"
$env:TAURI_TEST_RUN_ID = "local-smoke"
pnpm run tauri devRun the system suite:
pnpm run test:systemBy default, each run uses an isolated data folder and cleans it up when the suite finishes.
Prerequisites:
- Install
tauri-driver:cargo install tauri-driver --locked - On Windows, ensure
msedgedriveris installed and version-matched to Edge
Useful env overrides:
TAURI_TEST_RUN_ID: isolate each run's app data folderTAURI_TEST_REUSE_RUN_ID=1: reuse a fixedTAURI_TEST_RUN_IDacross runsTAURI_TEST_DATA_ROOT: custom root folder for system-test dataTAURI_TEST_KEEP_DATA=1: keep run data after test completion (no cleanup)TAURI_DRIVER_PATH: explicit path totauri-driverTAURI_TEST_EXPORT_PATH/TAURI_TEST_IMPORT_PATH: deterministic transfer file paths
Current automated scenarios (e2e/specs/system.e2e.mjs):
- Smoke flow (create board + open/close settings)
- Board lifecycle (create, rename, duplicate)
- Board persistence across app restart (
browser.reloadSession) - Settings persistence across app restart (
browser.reloadSession)
Board Management: The app stores board metadata and data in your system's app data directory
ExcaStoneBoard/
├── src/ # React frontend
│ ├── components/ # UI components
│ ├── hooks/ # React hooks
│ └── types/ # TypeScript types
├── src-tauri/ # Rust backend
│ ├── src/ # Rust source code
│ └── tauri.conf.json # Tauri configuration
└── README.md