Skip to content

Working on a ticket

The path from a DEF07 work item to a merged change, for Exsport. The company-wide rules — commits, branches, pull requests — are in Standards. This page adds what is specific to a multi-repo product under one Jira project.

How this page was verified

Repository and branch facts were read from the remotes on 2026-09-15. The Jira mapping is from the exsport-repos skill and the project's components.

1. Find the repo from the ticket

Every DEF07 ticket lives in one project but targets one or more repos. Two signals say which:

  • Component: Backend, Storefront, Admin.
  • Summary prefix: [BE], [Storefront], [Admin] on bugs; (BE) / (FE) on requirement stories, which also carry requirement codes like WEB-HP-00020.
SignalRepo
Backenddef-exsport-backend
Storefrontdef-exsport-frontend-storefront
Admindef-exsport-frontend-admin

One ticket can span repos. A [BE][Storefront] bug carries both components; the fix uses the same branch name in each affected repo, and each repo gets its own PR set. Do not clone the ticket per repo.

2. Check the branch model

Read it from the remote, never from memory:

bash
git ls-remote --heads origin
RepoPermanent branchesWhat that means
backend, storefront, adminmain, staging, developmentwork-item branch cut from origin/main, one PR per target
webhookmain onlycommit straight on main, no PR
simulator, data-migration, stresstest, pulumimain onlysame, single-branch

The three env-branch repos also carry old long-lived feature branches (vouchers, members, flash-sales, homepage, …) and legacy -staging / -main suffixed branches. Never base work on them and never merge them. The rest of the branch and PR rules are on the Git Workflow standard.

3. Reproduce on real data

The backend .env points at a local Postgres snapshot; the prod snapshots hold real data. See Local setup. When a third party is involved, remember dev points at the simulator: "payment is failing on dev" may just mean error simulation is switched on. Check the simulator dashboard before debugging the backend.

4. Make the change

  • Backend. One Postgres engine, plain SQL and TypeORM are fine. There are no migrations: the schema is the entity files with synchronize: true, so a schema change is a change to a *.model.ts. Reads and file-less writes are GraphQL resolvers; create/update with a file upload is a REST controller. See API and auth.
  • Frontends. Both are Next.js 15 App Router with Apollo Client and NextAuth. Admin also uses axios for multipart uploads. Match the per-domain layout under src/lib/<domain>/.

5. Commit, PR, deploy

Company standards apply: ticket id in the subject, [target] prefix on PR titles, plain merges, the work-item branch lives until production. Exsport specifics:

  • A push to a branch auto-deploys that env through GitHub Actions on the self-hosted rumah runner. developmentdeploy/dev.sh, stagingdeploy/staging.sh, maindeploy/prod.sh. Webhook is single-branch and always runs deploy/prod.sh. Watch the run in the repo's Actions tab; a Slack note fires at the end.
  • Prove it is live by checking the served bundle or API when it matters — a deploy can fail even after a clean merge.
  • PR body style here is Problem / Root cause / Fix / Testing. No attribution footer.
  • Never put another ticket's key in a PR or commit body, even a sibling DEF07 key — the GitHub for Jira app would attach the PR to the wrong ticket.

6. Sprint and language

  • Always add a new DEF07 item to the active sprint — a standing rule. Find it with project = DEF07 AND sprint in openSprints().
  • DEF07 work items are written in Bahasa Indonesia (English technical terms kept as-is), with the Indonesian bug headings. Load the jira-write-work-item skill before any create or edit.
  • Never transition a work item's status. Eris moves items himself.

7. Write it down

If the ticket changed something a hub page describes, the page is part of the ticket — update both locales and bump last_verified. The contributing guide has the template. To find pages behind the code after a change, run the staleness tool (see the update-docs skill).