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 likeWEB-HP-00020.
| Signal | Repo |
|---|---|
| Backend | def-exsport-backend |
| Storefront | def-exsport-frontend-storefront |
| Admin | def-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:
git ls-remote --heads origin| Repo | Permanent branches | What that means |
|---|---|---|
| backend, storefront, admin | main, staging, development | work-item branch cut from origin/main, one PR per target |
| webhook | main only | commit straight on main, no PR |
| simulator, data-migration, stresstest, pulumi | main only | same, 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
rumahrunner.development→deploy/dev.sh,staging→deploy/staging.sh,main→deploy/prod.sh. Webhook is single-branch and always runsdeploy/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-itemskill 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).