Inspiration
Since everyone on the team has bad handwriting and sometimes even teachers tell us how they can't read our handwriting , so we thought that there would be a lot of other people like us who may want to practice their handwriting. Whether they have been bullied for it, their parents told them to practice, or they simply want to improve their handwriting in general, we wanted to build something that could help.
What it does
ChickenScratch is a game where users can scan a QR code with their mobile device and link it to the website. Once connected, the application will prompt you to center your paper so that the camera can detect the letters being written by you. After that, you can select from different modes: Race, Practice, and Leaderboard. Currently, only the Race mode is functional. In this mode, you wait until you are matched with another player, and you compete against each other to see who writes the given words more accurately. The person with the most points wins the game and earns bragging rights, all while practicing their handwriting to become more neat and legible.
How we built it
We built a full-stack web application with Nuxt 4 and TypeScript for the frontend and Express.js/Socket.IO for the backend. We built a REST API with FastAPI to expose our model to our frontend and trained our model with YOLO.
Challenges we ran into
The main challenge that we faced was that we didn't have enough dataset of handwriting and the datasets online weren't the style we were looking for, so we had to hand write each one of the alphabet over 100 times, and we had to trace each one of the letters, once we scanned the writing onto our computer. We trained it over 20 times which took hours and waiting. Another challenge we faced was trying to expose our trained model to our front-facing application. Because we were relying on REST APIs through HTTP requests, we had to carefully balance between image compression, data limits, and technical limitations. We decided to convert images into base64 JSON blobs to pass between frontend and Socket.IO backend, then convert the image back into a .webp file to provide to the model.
Accomplishments that we're proud of
We are proud of our teamwork, friendship, and unity!
What we learned
We learned that training an image recognition model is hard! Finding data, and in our case, creating our own data, was by far the most time-consuming part of our process.
What's next for ChickenScratch
We plan on completing our dataset to encompass a wider range of handwriting styles, and further expanding on our game concept to create a more lively, engaging experience for users.
Built With
- fastapi
- python
- typescript
- vue
- yolo
Log in or sign up for Devpost to join the conversation.