Skip to content
After hours

Web and mobile game · farming and fishing

In development

Conuco

Grow crops, go fishing, and restore a Caribbean town. A game for web and mobile, written in Spanish first.

Fig. 1 How rendering and saves connect to the game
  1. Game core, no renderer

    • src/core
    • src/state
    • src/systems
    • src/data
    14 systems Farming, fishing, cooking, weather, festivals and more. Data files define 12 crops, 9 fish, 8 recipes and 6 characters.
    Saved random state Saving the mulberry32 state preserves the random sequence when the game reloads.

    126 Vitest tests exercise the game core without rendering a frame.

  2. Reads the state src/render The only folder that imports PixiJS. It draws the world from the game state, so the art can change without touching the rules.

Saving and loading

  1. Autosave Saves when the app moves to the background.
  2. src/save/save.ts Moves the previous save to the backup slot, then writes the new save with its version.
  3. src/save/migrations.ts Loading uses the backup if the main save is corrupt. Older saves migrate one version at a time, with defaults from a fresh game for new fields.
Role
Solo: design and code
Timeline
Jul 2026 to now
Stack
TypeScript, PixiJS, Vite, Vitest, Capacitor

In development. The code is private, but I’m happy to walk you through it on a call. Status checked Oct 22, 2026.

By the numbers

126

tests in 24 files, all on the game core

194

keys per language, English and Spanish

41

Dominican terms kept the same in both languages

The idea

Conuco is a farming and fishing game set in a Caribbean coastal pueblo, built first in Spanish. Plant, fish, cook and help the town recover. Keep the colmado open and bring back festivals as a resort developer looks to buy the coast.

What I built

PixiJS draws the world, with all imports contained in src/render. This keeps game systems, including the end-of-day logic, testable in Vitest without a display. Content is defined as data: 12 crops, 9 fish, 8 recipes, 6 characters, 4 town projects, 2 festivals and 12 achievements.

The game saves its mulberry32 generator state, so reloading continues the same random sequence. Saves are versioned and migrate forward one step at a time, filling new fields with defaults. A backup slot can recover a corrupt main save. The app saves automatically when it moves to the background.

The hard parts

  1. 01 Testing rules independently of rendering

    The renderer will evolve with the art. Keeping rules and state separate lets tests exercise the entire game core without drawing a frame.

    Where in the code: src/render

  2. 02 Migrating saved games

    New crops, festivals and story steps add save fields. Each version has a migration, and missing fields take defaults from a fresh game. A test covers recovery from a corrupt save using the backup slot.

    Where in the code: src/save/migrations.ts

  3. 03 Dominican terms in both languages

    Conuco, colmado and sancocho keep their names in English and Spanish. A shared glossary preserves 41 Dominican terms across both languages, and each language file contains the same 194 keys.

    Where in the code: src/i18n/glossary.json

What’s next

Tune the economy with a headless simulation and add two more festivals.

Shared approaches