Skip to content
NonbangkokPublic

About

⏱️ Rubix: AI-Powered Speedcubing Timer

Topics

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

Rubix Logo

Rubix Timer

The Professional AI-Powered Speedcubing Timer with Immersive HUD Experience.

Next.js TypeScript MediaPipe Vercel


✨ Features

  • 🖐️ AI Hand Tracking: Powered by MediaPipe Hands for professional Stackmat-style interaction.
  • ⚡ Instant Response: Optimized "Density-based" detection for millisecond-precision starts and stops.
  • 📺 Immersive HUD UI: Full-screen camera background with elegant Glassmorphism floating overlays.
  • 🎭 Dynamic Animations: Smooth scale-and-center transitions when the timer is running to maximize focus.
  • 📊 Solve History & Stats: Track your PB, Ao5, and Ao12 in real-time with an elegant sidebar history.
  • 📱 Responsive Design: Works on both desktop and mobile (Landscape orientation recommended).

🚀 Quick Start

1. Installation

Clone the project and install dependencies:

git clone https://github.com/nonbangkok/Rubix.git
cd Rubix
npm install

2. Run Locally

npm run dev

Open http://localhost:3000 and grant camera permissions.


🛠 Tech Stack

  • Framework: Next.js 14+ (App Router)
  • Vision Engine: MediaPipe Hands (Running in Web Workers)
  • State Management: Zustand
  • Styling: Vanilla CSS Modules (Glassmorphism & Neon Glow)
  • Language: TypeScript (Strict Mode)

📖 How to Use

  1. Setup: Place your camera so your hands are visible on the bottom part of the screen.
  2. Arming: Place both hands on the virtual "Red Pads" shown in the camera feed.
  3. Ready: Wait for the pads/timer to turn Green.
  4. Solve: Lift your hands to start the timer.
  5. Stop: Place both hands back on the pads immediately after solving to stop the clock.
  6. Reset: Lift your hands again to return to IDLE state.

🎛 Customize Layout

While the timer is idle (not running), a pencil icon appears in the bottom-right corner:

  1. Tap the pencil to enter edit mode.
  2. Drag or resize the stats/history panel, timer, cube panel, and the two hand-detection zones freely.
  3. Panels snap magnetically near the four corners and the four edge midpoints for quick alignment — you can still drop them anywhere else.
  4. A Reset button appears once your layout differs from the default, restoring all five elements at once.
  5. Tap the pencil again to finish editing.

Your layout is saved automatically in the browser (localStorage) and restored the next time you open the app.


🤝 Contributing

Contributions are welcome! Please check our CONTRIBUTING.md for guidelines on how to get started.


📄 License

This project is licensed under the MIT License - see the LICENSE file for details.


Made with ❤️ for the Speedcubing Lover

About

⏱️ Rubix: AI-Powered Speedcubing Timer

Topics

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Contributors

Languages