Conuco
A cozy Caribbean farming game where the point is reviving the pueblo, not min-maxing the farm.

Vertical slice code-complete and playtested. Code private.
The idea
Farming sims let you optimize a farm into an empire. That is not what a conuco is. Conuco borrows Stardew’s structure and gives it a Caribbean soul: you farm, fish, and cook, but the point is reviving a fading coastal pueblo. The festivals come back, the colmado stays open, and when the resort developer arrives with an offer, the town repaints the sign: NO SE VENDE.
What I built
PixiJS renders the world, but the game never knows it. Logic imports no rendering code; the Pixi world and the DOM overlay are both pure views of one typed store, communicating through a typed event bus. Content is data: crops, fish, recipes, NPCs, and festivals are declarative definitions, so a new festival is an entry, not a feature. Randomness is seeded and the seed state persists inside the save.
Saves are versioned with additive-only migrations, a deep default-merge, and a backup slot: a save from the first playable build gains every later feature seamlessly. The cultural layer is engineered with the same seriousness. A kept-terms glossary resolves identically in Spanish and English, so sancocho, morir soñando, and the Carnaval’s diablos cojuelos never get translated away, and first-use gloss toasts welcome players who did not grow up with those words. The core holds 126 unit tests; the vertical slice is complete and human-playtested.
The hard parts
01
The sacred seam
Logic-never-imports-render sounds easy until a festival needs fireworks. Holding the seam as features piled up is what keeps 126 tests meaningful: they test the game, not the renderer.
02
Culture as a build artifact
The glossary is enforced, not aspirational: if a kept term drifts between languages, the build fails. Identity survives localization because the compiler defends it.
03
Text UI in two languages
Spanish runs long and canvas text does not reflow. The DOM overlay exists precisely so variable-length strings lay out correctly in both languages at every size.
What’s next
Art lands incrementally: the drop-in pipeline swaps procedural shapes for painted art with zero code changes.