SELF-HOSTED · PHP 8 / MYSQL · NO FRAMEWORK, NO BUILD STEP

The board your team will actually keep open.

Refract Odyssey Studio needed a tracker that felt like it was built for a small game team — not a boxed-up enterprise tool with fifty menus for the ten things people actually do all day. RefractTrack is that tracker: a self-hosted kanban board purpose-built for tasks and bugs across one or more game projects, with real role-based permissions, per-project workflows, and zero monthly seat fees.

$20
one time cost
$0
monthly subscription
$0
seat fees
$0
web hosting markup
Unlimited
projects
Unlimited
users
Unlimited
tickets

It's a real board, not a spreadsheet pretending to be one

Drag-and-drop task cards across as many columns as your workflow needs, with priority and type badges, group tags, and assignee visible at a glance — no click-through required to know what you're looking at.

RefractTrack board view showing five columns with color-coded priority and type badges, group tags, and assignees, shown in the Ember color theme.
The board view: five columns, color-coded priority and type badges, and assignees — all visible without opening a single card.
RefractTrack list view showing the same project as a sortable, filterable table.
Prefer rows to lanes? The same tasks, one click away, as a sortable and filterable table.

Bug reports that actually carry the information a developer needs

Flip a task's type to Bug and three extra fields appear automatically: Expected behavior, Actual behavior, and Steps to reproduce. No more bug tickets that are just a title and a shrug.

A bug ticket in RefractTrack with structured expected, actual, and steps to reproduce fields, review status, and stage and assignee controls.

A bug ticket with structured repro steps, review status, and one-click stage/assignee updates — all on a single screen.

Discussion and system history, never tangled together

Every task gets its own threaded comments tab — rendered through a light text-formatting engine with bold, italics, headings, lists, and color-highlighted code blocks — sitting right next to an automatically generated activity log. Mention another ticket's code, RFO-1 for instance, anywhere in a description or comment, and RefractTrack turns it into a live link automatically.

Comments and text formatting in a RefractTrack task, including an automatically linked task code.

Comments and formatting in action, including automatic task-code linking (watch "RFO-1" turn into a link on its own).

Approvals: a real sign-off step, not an honor system

Give playtesters and QA a stripped-down reporting form, and every ticket they file lands in a review queue before it ever touches the board — approve, mark won't do, or send it back, and every decision is reversible.

The Approvals queue showing a ticket from a reporter waiting for review before it counts as work on the board.

The Approvals queue: tickets from reporters wait here before they count as "real" work on the board.

Bulk-create a whole biome's worth of tasks in one pass

Paste a list — enemy names, biome names, whatever repeats — write one title/description template with an {item} placeholder, and generate the whole batch at once. Save the list for next sprint if you'll need it again.

RefractTrack's bulk create screen with a list of biomes and an item placeholder in the title template, showing a live preview.

Bulk create: one template, any list, instant batch of tickets — with saved lists for anything you'll reuse.

Stages and groups that bend to your project, not the other way around

Every project gets its own independent stages and groups — rename, reorder, hide, or add to them freely, and it never touches any other project. Hide a stage from the board without losing its tickets; delete one only once it's actually empty.

Stage management screen showing reorderable, hideable stages with flags for requiring an assignee or marking a task done.
Reorder, hide, and flag which stages require an assignee or count as "done."
Task groups screen showing ten color-coded, per-project group tags including Art, Boss, UI, and L10N.
Color-coded, per-project group tags — Art, Boss, UI, L10N, whatever cross-cutting areas make sense for this project.

Permissions that go far deeper than "admin or not"

RefractTrack ships a genuine role-based permission system: 46 individual permission keys across tasks, comments, attachments, projects, stages, groups, saved lists, backups, themes, and user management — combinable into named role presets so setting up the next hire takes ten seconds, not ten menus. The sensitive permission set is checked per-project too: someone can hold a permission globally and still be denied for a specific project they lack access to.

Users list showing each teammate's role-derived access level and how many projects they're granted access to.

A whole studio team, each with a role-derived access level and project access shown at a glance.

Role presets screen showing Admin, Developer, and Reporter roles with permission counts.
Role presets: Admin, Developer, Reporter — or build your own.

Role presets are just a starting point, not a leash — apply one to copy its permissions onto a teammate, then adjust freely from there without ever touching the preset itself. Editing a role later never reaches back and changes anyone it was already applied to.

Two people, one ticket, zero lost work

When two teammates edit the same task at the same time, RefractTrack saves the changes field-by-field instead of letting whoever clicks second silently overwrite the first. Change different fields — or land on the same value anyway — and both saves apply cleanly. Only a genuine collision, the same field changed to two different values, gets resolved in favor of whichever save landed first, and even then nothing is silently lost: what would have been overwritten is written to the task's activity log, with a plain-language note explaining exactly what happened.

PRIYA — saves first
StageIn Review
PriorityHigh
Assignee— unchanged —
+
SOFIA — saves seconds later
Stage— unchanged —
PriorityCritical
Groups+ Boss
RESULT — both saves survive
StageIn Review (Priya)
PriorityHigh — Priya's save wins the collision; Sofia's "Critical" is logged, not lost
Groups+ Boss (Sofia)

No schema change, no version/lock column, no blocking merge prompt — just a per-field comparison against what the form was originally loaded from.

Make it look like your studio's tool, not somebody else's

Fifteen accent-color themes (yes, including an animated Rainbow option) and a custom application name, both changeable in two clicks from inside the app — no file access, no redeploy. Every screenshot on this page, in fact, is shown in Ember, one of the fifteen.

Application config screen showing fifteen selectable color themes, with Ember currently selected, and a custom application name field.

Fifteen themes to choose from, changeable without touching a config file — Ember shown selected here.

Ember (shown throughout) Blueprint Slate Violet Rose Moss Crimson Rainbow + 7 more

Attach whatever the task actually needs

Screenshots, reference art, design docs, audio cues, a snippet of source — tasks accept a wide range of file types out of the box, grouped into images, archives, office documents, audio, plain text and data, source code, and a broad set of game-engine-specific formats (Godot, GameMaker, Ren'Py, and more). A small reference button right next to the upload field lists everything currently accepted, so nobody has to guess mid-upload. Installers, executables, and raw SVGs are never accepted, on every install, for safety.

The attachments panel on a RefractTrack task, showing the upload control and accepted file type summary.

Every task gets its own attachments panel, gated behind the same permission checks as everything else.

Your data is never locked in

Back up an entire project — every ticket, comment, attachment, activity entry, plus its stages, groups, and saved bulk-create lists — as a single .zip file, any time you want, and bring it back into this instance or a different one. Task codes are renumbered cleanly on import and cross-references between tickets are rewritten automatically, so nothing breaks. A backup too large to upload through a browser can be restored straight from the server's command line instead, with no size ceiling to run into.

Export screen showing ticket, comment, attachment, and saved-list counts with a single Download Backup zip button.

One-click backup of an entire project — tickets, attachments, and its stages, groups, and saved lists, all in one file.

Nothing important is ever really gone

Archiving clears finished work off the board without deleting a single byte — everything stays searchable and can be restored in one click.

Archived tickets screen showing a restorable ticket with an Unarchive action.

Archived tickets stay fully intact and restorable — archiving tidies the board, it doesn't destroy anything.

And it scales from a two-person prototype to a whole publishing slate

Run as many projects as you want from a single install, each with its own prefix, task numbering, stages, and groups — switch between them from the same nav bar without losing your place. RefractTrack remembers the project you were last on, so logging back in drops you right where you left off, and the project switcher keeps you on the same kind of page — flip from one project's Export screen to another's Export screen, not back to some board you weren't even looking at.

Projects screen showing two active projects, Refract Odyssey and Frostbound Skies, side by side.

Multiple projects, one install — Refract Odyssey and Frostbound Skies, side by side.

Why teams pick RefractTrack

Multi-project, per-project config

One install covers your whole studio's slate, not just one game.

No seat fees, no usage tiers

Self-hosted on plain PHP and MySQL/MariaDB — one server, no per-user billing.

Ready for playtesters

Testers can file tickets without seeing anything else that's going on. What they submit gets a sign-off step before it clutters the board.

No framework tax

No build step, no bundler, no JavaScript framework to keep patched — just PHP pages designed to support your team.

Bug reports with substance

Expected/actual/steps-to-reproduce fields built into the task type itself, not bolted on as free text.

Real role-based access control

Not "admin vs. everyone else" — 46 permission keys, role presets, and per-project access grants.

Built for busy teams

Concurrency guards make it so two people editing the same ticket at once never silently lose each other's work.

Everything is reversible

Archive instead of delete, "won't do" instead of losing a ticket, edit history preserved on comments.

Your data is never locked in

A single zip backup carries every ticket, attachment, and comment — restorable here or on a fresh install, any time you want it.

Attachments built in

Images, documents, audio, and source code all accepted out of the box, with a safe, curated allow-list.

Hardened by default

CSRF protection everywhere (including login and install), secure cookies, security headers, and gated attachment downloads — the kind of hardening most side projects skip.

A real migration system

Schema updates apply automatically and safely, whether from the browser or a deploy script, with no manual SQL required.

Guided setup, painless upgrades

An optional script gets a bare server ready to go; upgrading later is a files-only copy that never touches your data.

Color themes + custom app name

Make it feel like it belongs to your studio, with your name and color preferences.

Task codes that link themselves

Mention RFO-12 anywhere in a description or comment and RefractTrack turns it into a live link automatically.

Track everything, lock in nothing, and keep it a tool your team actually wants to open.

Screenshots above are from seeded demo data for two fictional projects, Refract Odyssey and Frostbound Skies, shown in the Ember color theme. RefractTrack is self-hosted — bring your own PHP 8 / MySQL server, or provision a fresh one with the included setup script.