Skip to content
codexa

Web apps · React

Bug tracker

Log bugs with severity, area and estimate, then move them from open to fixed on a board.

Bug tracker starter, as built from its own files
Starter screenshot captured from this template's own build at 1440×900. It shows the template as it ships, not output generated from a prompt.

What you get

A focused issue tracker for a small product team: file bugs with severity, platform and estimate, filter by status and work them across a board. The areas, severities and sample issues live in src/app.ts.

Files

Exactly what is copied into a new project: 12 files, nothing generated.

Raw data: GET /api/v1/templates/app-bug-tracker

src/app.ts
src/app.ts
import type { AppSpec } from "./types"; /** Everything this app shows. Edit freely. */export const app: AppSpec = {  "brand": "Patchwork",  "icon": "code",  "storageKey": "patchwork-bugs-v1",  "entity": {    "singular": "Bug",    "plural": "Bugs"  },  "title": "Bugs",  "subtitle": "Release 4.12, code freeze on November 14",  "titleKey": "title",  "statusKey": "status",  "tones": {    "Open": "bad",    "In progress": "warn",    "In review": "accent",    "Fixed": "good"  },  "views": [    "board",    "table"  ],  "fields": [    {      "key": "title",      "label": "Title",      "type": "text",      "required": true    },    {      "key": "area",      "label": "Area",      "type": "select",      "options": [        "Web",        "iOS",        "Android",        "API"      ]    },    {      "key": "severity",      "label": "Severity",      "type": "select",      "options": [        "Critical",        "Major",        "Minor"      ]    },    {      "key": "assignee",      "label": "Assignee",      "type": "text"    },    {      "key": "reported",      "label": "Reported",      "type": "date"    },    {      "key": "points",      "label": "Points",      "type": "number"    },    {      "key": "status",      "label": "Status",      "type": "select",      "options": [        "Open",        "In progress",        "In review",        "Fixed"      ]    },    {      "key": "steps",      "label": "Steps to reproduce",      "type": "longtext",      "hideInTable": true    }  ],  "summary": [    {      "label": "Bugs",      "kind": "count"    },    {      "label": "Open",      "kind": "count",      "status": "Open"    },    {      "label": "Points open",      "kind": "sum",      "field": "points",      "status": "Open"    },    {      "label": "Fixed",      "kind": "count",      "status": "Fixed"    }  ],  "seed": [    {      "title": "Checkout button stays disabled after a coupon is removed",      "area": "Web",      "severity": "Critical",      "assignee": "Leah",      "reported": "2026-10-26",      "points": 3,      "status": "In progress",      "steps": "Add a coupon, remove it, then try to pay."    },    {      "title": "Push notifications arrive twice on iOS 19",      "area": "iOS",      "severity": "Major",      "assignee": "Kenji",      "reported": "2026-10-22",      "points": 5,      "status": "Open",      "steps": "Enable notifications, background the app, send a test push."    },    {      "title": "Search returns 500 for queries with an ampersand",      "area": "API",      "severity": "Major",      "assignee": "Ravi",      "reported": "2026-10-19",      "points": 2,      "status": "In review",      "steps": "GET /search?q=salt%20%26%20pepper"    },    {      "title": "Dark mode: order total unreadable on receipts",      "area": "Android",      "severity": "Minor",      "assignee": "Leah",      "reported": "2026-10-17",      "points": 1,      "status": "Fixed",      "steps": ""    },    {      "title": "Session expires while uploading large photos",      "area": "Web",      "severity": "Major",      "assignee": "Ravi",      "reported": "2026-10-25",      "points": 3,      "status": "Open",      "steps": "Upload a 40 MB photo on a slow connection."    },    {      "title": "Date picker skips the 31st in some months",      "area": "iOS",      "severity": "Minor",      "assignee": "Kenji",      "reported": "2026-10-12",      "points": 2,      "status": "Fixed",      "steps": ""    },    {      "title": "Rate limit headers missing on 429 responses",      "area": "API",      "severity": "Minor",      "assignee": "Ravi",      "reported": "2026-10-27",      "points": 1,      "status": "Open",      "steps": ""    },    {      "title": "Android back gesture closes the cart instead of the sheet",      "area": "Android",      "severity": "Major",      "assignee": "Leah",      "reported": "2026-10-23",      "points": 2,      "status": "In progress",      "steps": "Open the cart, open the size sheet, swipe back."    }  ]};

Remix

Remix this template

Describe what to change and the agent starts from Bug tracker's files. The box is already started for you: finish “Start from Bug tracker and …”

Agent ready

Creates a free account first; your idea is carried over.

Dependencies

Documented from the template's package.json. The runtime has a prebuilt dependency set for Vite + React + TypeScript, so installs are fast.

  • react^19.1.0
  • react-dom^19.1.0
  • vite^6.3.0
  • @vitejs/plugin-react^4.4.0
  • tailwindcss^4.1.0
  • @tailwindcss/vite^4.1.0
  • typescript^5.8.0

How it runs

Framework
Vite + React + TypeScript
Dev command
npm run dev
Build command
npm run build
Output directory
dist
Port
5173
Entry route
/

Projects run in an isolated sandbox with a live preview. Read the projects documentation for settings, snapshots and deployment.

All templates

Build on Bug tracker

Create a free account, start from this template, and ask the AI agent to turn it into your app.