jj@portfolio:~/projects$jairik "jj" mccauley — software engineer
jj@portfolio: ~/projects/capymorph — README.md — zsh

jj@portfolio:~/projects/capymorph$ cat README.md

CapyMorph

December 2025 · ● shipped · 3 screenshots · game / education

about

Educational 2D game that facilitates interactive morpheme exercises.

CapyMorph teaches English morphology through a maze game. You play as Morphy, a capybara trying to reach her baby, and every Cheetos or Mountain Dew pickup opens a question about roots, affixes, inflection, derivation, or allomorphy. Correct answers add points before the maze continues.

The joke-heavy capybara theme was intentional. Morphology can get abstract fast, so the game turns it into movement, short decisions, and visible progress instead of another worksheet.

architecture

React owns the controls, question modal, level-complete flow, and leaderboard. Phaser owns the game canvas and physics. A Zustand store connects them so opening a React modal pauses movement inside the Phaser scene without either layer needing to control the other directly.

Each maze is generated in the browser with Eller's algorithm. A* finds the solution route and helps place collectibles along it, far enough apart that questions do not arrive back to back. Maze height and collectible count grow with each level.

content and deployment

An offline Go tool generated more than 512 questions across eight morphology families using a 145-word capybara-themed word bank. The Go and Gin API samples those questions from MongoDB and also stores leaderboard scores.

A three-stage Docker build compiles the React client and Go server into a small Alpine image. Pushes to main deploy automatically to Fly.io, and CodeQL checks both the TypeScript and Go code.

screenshots — 3 files

CapyMorph — educational 2D morpheme learning game, screenshot 1 of 3CapyMorph — educational 2D morpheme learning game, screenshot 2 of 3CapyMorph — educational 2D morpheme learning game, screenshot 3 of 3
$ cd ~/projectsexit code 0