October 15, 2026
Pintar Party โ Educational Party Games.
Frontend ยท Backend ยท GameA web-based educational party-game platform: the TV or laptop runs the game, and players' phones become controllers after scanning a QR code. Questions are built into the game mechanics.

Description
Pintar Party (working title, code name PlayLearn) is an educational party-game platform for casual home use. The main screen โ a TV or laptop โ runs the game, and every player joins by scanning a QR code with their phone, which becomes their controller. No app install is needed.
Questions are part of the gameplay instead of a separate quiz: in Quiz Fighter, the first player to answer correctly picks an attack; in Brain Racers, question gates on the track give a boost or a slowdown; in Susun Kata, players arrange scrambled letters on their phone to form the answer.
Background
Most educational games are made for classrooms or for one child on one device. I wanted something families can play together in the living room, like a console party game, where learning happens because you want to win.
Goal
Build a platform where adding a new game does not require changing the lobby or the controller, and where game logic cannot be cheated from a phone.
Features
- Lobby in PlayStation 4 style: a row of game tiles, key art, QR code and room code, player list with leader and kick, team selection, and keyboard/remote navigation.
- One shape-shifting controller app: the server tells each phone which component to show โ A/B/C buttons, joystick, scrambled letters, tilt, or pose.
- Games: Quiz Fighter (2 players), Brain Racers (4 players), Susun Kata crossword (4 players), and a motion-controlled runner based on Motion Runner .
- Question bank by subject and grade, with an admin page and JSON import/export.
- Parental settings: subjects, grade, parent PIN, and play limit.
Technologies
- TypeScript everywhere, organized as npm workspaces (
server,host,controller,shared,games,questions,pose). - Node.js + Express + Socket.IO for rooms and real-time events.
- Phaser 3 for the game scenes on the main screen.
- React for the phone controller,
nipplejsfor the joystick, andqrcodefor joining. - MediaPipe Pose Landmarker running in the phone’s browser (video never leaves the phone).
- SQLite (
node:sqlite) for the question bank.
Technical Decisions
The server is authoritative: answers, “who was first”, scores, and damage are computed on the server using its own receive time, never trusted from the phone. Games declare what they need in a manifest (players, teams, controller type, questions), and the lobby and controller adapt to it.
Controllers send high-level actions like answer, lane, or jump rather than raw sensor data, so a game does not care whether input came from buttons, tilt, or the camera.
Notes
Work in progress. The source code is not public yet.

Hey! I’m Fanny, the software engineer tending to this digital garden. You can read more about me, or subscribe by email.