Live · part of Class Cookies
Mango Mafia
The Mafia party game for ESL classes of 4 to 20 students. The teacher is the moderator; the app deals the roles, remembers who is who, and tells the teacher exactly what to say and do next.

14roles: 4 free, 10 more with a subscription
4–20players on one screen
729automated tests passing
0student devices
As of 7 October 2026. Player names in these screens are made up.
How a round runs
A script for the teacher, one step at a time
- Names and roles. Type the players in (a subscriber can load a class from My Classroom), then choose how many of each role.
- The handout. With the class's eyes closed, each student comes up and sees their role alone.
- Night. The app reads each role's line ("Mafia, wake up…"); the teacher clicks whoever the student points at.
- Morning. The app reveals what happened, with an optional drumroll, then runs a timed discussion.
- The vote. One vote per living player, with undo; a tie means nobody goes out. The app spots the win.




Design rules
The screen is public
Everyone in the room can see the projector, so the game must never give a secret away.
- Nothing the teacher selects at night stays visibly marked, and no prompt hints at who did what.
- Kid-safe words throughout: players are "removed" or "out", and the Bomber became the Party Popper.
- "Back one turn" undoes a mistake, and a built-in guide outlines the next thing to click.
- 729 automated tests in 57 files, including whole games played to a win and checks that no screen leaks a hidden role.
- Subscribers can load a class from My Classroom. Only the class's id travels in the link; the names are read with the teacher's own sign-in.
- Lighthouse Performance on 7 October: 100 on desktop; 93 (home) and 87 (play) on mobile, where the character art is the heaviest part of the page.
Built between 26 July and 6 October 2026: 45 commits on the production branch, every one with a Claude co-author line.
Next.js 16React 19TypeScriptTailwind CSS 4VitestWeb Audio APIVercel (Seoul)