Inspiration
Our project was inspired by the idea of bringing the Rubik’s Cube into a digital and educational environment. We wanted to explore how a familiar, everyday puzzle could be used to create interactive learning experiences. By combining the Rubik’s Cube with a Scratch-style programming interface, our goal is to make it easy for beginner coders to implement their creative ideas.
What it does
The platform allows users to connect a physical Rubik’s Cube via Bluetooth and interact with it in a digital setting. Once connected, users can access a block-based programming interface similar to Scratch and see their cube on the digital interface. Using these blocks, they can build custom Rubik’s Cube games and programs. The block system inspired from Scratch includes several useful features, such as tracking the current state and transition states of the cube, enabling timers, and supporting multiplayer interactions. These features allow users to design different types of games, challenges, and collaborative activities centered around the cube. Overall, the application provides a way to visualize and interact with a Rubik’s Cube digitally while creating custom games you can play with others. The main goal is to make learning fun by combining puzzle solving, programming, and interactive gameplay.
How we built it
The project had seen an ambitious goal: it included a full tech stack including Go, wails, React, Websockets, cubing,js, twoPhaseSolver, and blockly. Before the hackathon, much care was taken to implement the Rubik's Cube into a digital tech solution that has a friendly user interface enabling an accessible learning environment to learning basic block coding and game development. Our intended audience were for elementary schoolkids, but we pivoted to a model that prioritized engagement and collaboration for anyone interested in Rubik's Cubes and coding.
Challenges we ran into
This project required domain expertise and how to run a Rubik’s Cube with its separate language notation. For instance, if you were to turn the top row clockwise you would use U, but if you want to turn the top counterclockwise that would be notably U’. There are about 5 more terms and derivatives on top of that for the different parts of the Rubik’s cube as well. Expressing the Bluetooth Rubik’s Cube was feasible, but figuring out ways to map out how to rotate the cube at all different angles and visualizing it was another issue. However, the twoPhaseSolver library ended up helping by making some modifications. We also ran into front-end issues with React in the beginning and back-end issues with the client and server interactions, but eventually solved them through dedicated design reviews.
Accomplishments that we're proud of
We have an interactable program that maps the bluetooth Rubik’s Cube in real-time onto a visualization. We were also able to implement the networking logic from client to the server and vice-versa. The project was ambitious with a unique stack with many niche libraries and software that not all the team members were familiar with. Yet, we tackled the tech stack from scratch. While the learning curve was steep, we emerged as a more cohesive team, turning our individual skill sets into a shared expertise that we’ll carry into our next projects.
What we learned
All the team members now understand Rubik’s cube notation and how to use the different software of the track. This includes cubing.js, wails, and blockly libraries. We all know how to connect to the front end using React typescript to build network systems using Go and Web Sockets.
Most importantly, this project helped us learn more about AI systems and how to use them for our projects. We are now able to reasonably discern what the current LLM models can do for projects with niche versus universal issues. We used cubing.js and we saw that it did not fare well but for universal coding issues it does a great job at providing solutions.
What's next for Code n' Cube
The team would like to add additional functionalities to the Code n’ Cube. The first priority would be adding more unique building blocks for our users so that they have more options for creating their minigames. Since creating custom blocks requires attention, this would likely be a regular updated functionality to Code n’ Cube.
Built With
- blockly
- css
- cubing.js
- go
- html
- nix
- nsis
- python
- python-package-index
- react
- typescript
- wails
- websockets
Log in or sign up for Devpost to join the conversation.