Inspiration
We've all been there, staring at code, nodding along, convincing ourselves we understand it. Then two days later, nothing. We forget everything. This isn't a motivation problem, it's a learning method problem. Passive reading doesn't make things stick. We built Codence because we were tired of feeling like we understood something, only to realize later that we didn't.
What it does
Codence is a multiplayer RPG-styled, pixel-art game where friends learn code together by actually doing something with it, not just reading it.
Here's the flow:
- A player submits any code file in any language
- Amazon Nova Lite explains it statement by statement with text narration
- Amazon Polly reads the explanation aloud so players can absorb it
- Then the battle begins — random lines of code vanish and players race to fill them back in from memory
- Amazon Nova Lite then fires a quiz round with questions generated specifically from that exact code
- Points and a live leaderboard keep the competition going — but only within your private guild, so it's always friendly
How we built it
We split the work across four people over a few weeks while juggling college exams and other deadlines.
- Frontend — Built in React with Tailwind CSS, Framer Motion for animations, and Monaco Editor for the code input. We went with a pixel-art RPG theme — dark forest, fireflies, campfire lobby — to make it feel like a real game, not just a study tool.
- Backend — FastAPI with python-socketio for real-time multiplayer. Rooms, players, scores and leaderboards all managed in memory with automatic cleanup for disconnected players.
- AI Integration — All two Nova models integrated through AWS Bedrock. Nova Lite handles code explanation, Nova Polly converts it to voice, and Nova Lite generates and evaluates the quiz rounds.
Challenges we faced
Getting Amazon Polly's audio to play correctly on the frontend took some debugging.
Designing the vanishing lines mechanic was trickier than expected. We needed to pick lines that were meaningful enough to test understanding but not so random that the game felt unfair. We ended up with a mix — every third line plus some random selections.
Keeping real-time multiplayer in sync across players while also making API calls to Bedrock required careful event management with Socket.IO.
And honestly, doing all of this while being first-time hackathon participants, first-time AWS users, and having college exams on the same deadline day was the biggest challenge of all. 😅
What we learned
- How to integrate Amazon Bedrock and work with Amazon Polly and Nova Lite
- How to build real-time multiplayer with Socket.IO
- How to design a gamified learning experience that's actually fun to use
- That a pixel forest with fireflies is always the right UI choice
What's next for Codence
- Let Nova decide which lines to blank out based on complexity, not just position
- Add character classes and persistent XP across sessions
- Support code image uploads — snap a photo of a whiteboard and play
- Mobile support so students can practice anywhere
- Competition against other teams
Built With
- amazon-bedrock
- amazon-nova-lite
- amazon-polly
- amazon-web-services
- fastapi
- framer-motion
- html
- javascript
- monaco-editor
- python
- python-socketio
- react-19
- react-router
- socket.io
- tailwind-css
- uvicorn
Log in or sign up for Devpost to join the conversation.