Table of Contents

Modding GrindFest

GrindFest is built to be modded. The UI, the story, the world, everything can be extended or replaced by mods.

What Can You Mod?

Mod Type What It Does Folder
UI Mods Add panels, overlays, HUD elements UI/
Story Mods Define areas, monsters, dungeons, quests, NPCs, music, weather Story/

Where Do Mods Live?

All mods live in the Mods folder inside your GrindFest data directory:

%LOCALAPPDATA%Low/GrindFest/GrindFest/
├── Mods/
│   ├── GrindFest/          ← Base game content (Story)
│   ├── InventoryList/      ← Example UI mod
│   └── MyMod/              ← Your mod goes here
├── typings/                ← TypeScript type declarations for OneJS / C# API
└── _ModTemplate/           ← Copy this to create a new mod!

Tip: You can open this folder quickly from the game's Mods menu.

Creating a Mod

A mod is a folder with a mod.json file. That's it.

Step 1: Create a Folder

Create a new folder in Mods/:

Mods/
├── GrindFest/       ← base game (don't touch)
└── MyFirstMod/      ← your new mod!

Step 2: Create mod.json

Inside MyFirstMod/, create mod.json:

{
    "Name": "MyFirstMod",
    "Description": "My very first GrindFest mod.",
    "Author": "YourName",
    "Version": "1.0.0",
    "Tags": ["ui"]
}

Step 3: Open the Game

Start GrindFest and open the Mods menu. Your mod appears in the list!

What's in mod.json?

Field Required Description
Name Yes Unique mod name (matches folder name)
Description Yes Shown in the mod browser
Author No Your display name
Version No Semantic version (e.g. 1.0.0)
Tags No Categories: ui, story

Mod Folder Structure

Add content folders to make your mod do something:

MyFirstMod/
├── mod.json            ← Required: mod metadata
├── preview.png         ← Optional: preview image for mod browser
├── UI/                 ← Optional: UI mod (TypeScript/JSX)
│   ├── index.tsx       ← Source code
│   ├── esbuild.mjs     ← Build config
│   ├── package.json
│   ├── tsconfig.json
│   └── dist/
│       └── index.js    ← Built output (loaded by game)
└── Story/              ← Optional: Ink story files
    └── *.ink

The game automatically detects which content types your mod has based on which folders exist.

Tip: The game includes a _ModTemplate folder next to your Mods folder with everything pre-configured. Just copy it into Mods/, rename it, and you're ready to code.

Publishing

To share your mod, select it in the in-game Mods menu and click Publish to upload to Steam Workshop.

Only the final content gets uploaded: mod.json, UI/dist/index.js, Story/*.ink, and your preview image. Dev files like node_modules, source code, and build tools are automatically excluded.

Next Steps