A native Windows desktop application for connecting to and interacting with GAN Smart Cubes via Bluetooth. This app provides real-time cube state monitoring, move tracking, and 3D visualization.
Based on: This project ports the gan-web-bluetooth library and gan-cube-sample web app to a native Windows desktop application using Tauri.
- Bluetooth Connectivity: Connect to GAN Smart Cubes (356i, 356i3, 11M Pro, 12M, 13M, etc.)
- Real-time Data: Live cube state updates including:
- Clock Skew timing information
- Quaternion orientation data
- Angular velocity measurements
- Move time deltas
- 3D Visualization: Interactive 3D cube representation with real-time rotations
- Move Detection: Track and display cube moves as they happen
- Native Performance: Built with Tauri for optimal Windows performance
- Frontend: TypeScript, HTML5, CSS3
- 3D Graphics: Three.js for quaternion calculations and cube visualization
- Cubing Library: For 3D cube rendering and state management
- Bluetooth: Web Bluetooth API for GAN cube communication
- Desktop Framework: Tauri 2.8 (Rust + Web technologies)
- Build Tool: Vite
- Libraries:
- jQuery for DOM manipulation
- RxJS for reactive programming
- AES-JS for cube encryption protocols
- Windows 10 or later
- Node.js 18+
- Rust (for development)
- Bluetooth adapter with BLE support
- Compatible GAN Smart Cube
-
Clone the repository:
git clone https://github.com/shanedirksen/gan-cube-windows-app.git cd gan-cube-windows-app -
Install dependencies:
npm install
-
Install Rust (if not already installed):
- Visit rustup.rs and follow the installation instructions
-
Install Tauri CLI:
npm install -g @tauri-apps/cli
-
Run in development mode:
npm run tauri dev
-
Build the application:
npm run tauri build
-
The built executable will be available in
src-tauri/target/release/
- Launch the application
- Turn on your GAN Smart Cube and ensure it's in pairing mode
- Click "Connect to GAN Cube" in the app
- Select your cube from the Bluetooth device list
- Start cubing! The app will display real-time data as you manipulate the cube
- GAN 356 i
- GAN 356 i3
- GAN 11 M Pro
- GAN 12 M
- GAN 13 M
- Other GAN Smart Cubes with Bluetooth connectivity
gan-cube-windows-main/
├── src/
│ ├── main.ts # Main application logic
│ ├── style.css # Application styles
│ └── lib/ # GAN Bluetooth library
│ ├── gan-cube-definitions.ts
│ ├── gan-cube-encrypter.ts
│ ├── gan-cube-protocol.ts
│ ├── gan-smart-cube.ts
│ └── gan-smart-timer.ts
├── src-tauri/ # Tauri backend (Rust)
├── index.html # Main HTML template
├── package.json # Node.js dependencies
├── tauri.conf.json # Tauri configuration
└── vite.config.ts # Vite build configuration
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Ensure your GAN cube is in pairing mode (usually indicated by blinking lights)
- Make sure Bluetooth is enabled on your Windows machine
- Try resetting the cube if connection fails
- Ensure you have the latest version of Rust installed
- Clear node_modules and reinstall dependencies:
rm -rf node_modules && npm install - Check that all prerequisites are properly installed
This project is licensed under the MIT License - see the LICENSE file for details.
- Original web implementations that made this project possible:
- gan-web-bluetooth - Core Bluetooth protocol library
- gan-cube-sample - Reference web implementation
- GAN Robotics for creating the smart cube technology
- Tauri Team for the excellent desktop app framework
- cubing.js community for the cubing algorithms and 3D visualization tools
- gan-web-bluetooth - Original web-based GAN cube interface
- gan-cube-sample - Sample web implementation
- cubing.js - Cubing algorithms and visualization library
Note: This is an unofficial project and is not affiliated with GAN Robotics. GAN is a trademark of GAN Robotics.