5.2 KiB
Contributing to OrderOps
This repo is used to simulate a small product team environment. Treat every change like a real ticket and a real pull request.
Purpose
Students are expected to use their coding harness to:
- inspect the relevant code paths before editing
- compare their change against this document before opening a PR
- run the right checks locally
- produce a PR summary that explains behavior, testing, and risk
Use this file as the review rubric.
Local development
bun install
bun run seed
bun run seed:user
# tab 1
bun run dev:api
# tab 2
bun run dev:web
Common checks:
bun run check
bun run test
bun run build:web
Using your coding harness
Ask your harness to do these things explicitly:
- trace the feature or bug through the repo before changing code
- compare your branch against
CONTRIBUTING.md - identify missing tests or missing manual verification
- check whether your change follows existing file and naming patterns
- draft your PR summary and testing notes
Good prompt pattern:
Explain code path for this ticket and list files likely affected.Review my changes against CONTRIBUTING.md and list gaps before PR.Generate PR summary, testing notes, and follow-ups from my diff.
OrderOps team conventions
These are repo-specific rules. Follow them even when they differ from general habits.
File organization
Do:
- keep files grouped by feature and purpose
- use action-based filenames like
update-order-item.tsororder-routes.ts - keep shared contracts in
packages/shared - put database access in repository files
- put business rules in domain or use-case files
- let page-level UI files own data loading
- keep presentational components focused and small
Do not:
- add broad
utils.ts,helpers.ts, ormisc.tsdump files - hide unrelated business rules in one generic helper
- move unrelated files just to match personal preference
- create new abstractions before there is a second real use
Backend conventions
Do:
- keep route handlers thin
- validate at the API boundary
- keep business rules authoritative on the backend
- name functions after business actions
- keep audit and status logic readable in business terms
Do not:
- put complex business rules directly in route handlers
- spread status checks across random layers when one clear place exists
- rely on frontend validation alone
Frontend conventions
Do:
- keep page components responsible for loading and mutation wiring
- keep child components focused on rendering and local interaction
- use clear labels and copy that support and ops staff would understand
- prefer explicit prop names over short clever names
Do not:
- bury fetch logic deep in presentational components
- add styling abstractions when plain Tailwind utilities are clearer
- rename concepts away from business language used elsewhere in repo
Naming and searchability
Do:
- prefer direct names over clever names
- keep one clear responsibility per file when practical
- make it easy to find logic with repo search
Do not:
- introduce abbreviations that make search harder
- split one small behavior across many tiny files without a good reason
Comments and copy
Do:
- use comments for business context, constraints, or non-obvious reasoning
- write test names in business language
- write PR summaries in terms of behavior impact
Do not:
- add comments that only restate obvious code
- describe implementation only without explaining user or business impact
Testing expectations
Do:
- add or update tests when behavior changes
- prefer API or domain tests for business logic
- keep tests focused on public behavior
- run the cheapest relevant checks first
Current repo checks:
bun run checkbun run testbun run build:web
Manual checks are still expected when UI or workflow behavior changes.
PR readiness checklist
Before opening a PR, verify all of these:
- change is scoped to one ticket or one small reviewable concern
- acceptance criteria for the ticket have been checked
- code follows file organization and layering rules in this doc
- no unrelated refactor is mixed in
- debug code, temporary logs, and dead code are removed
- relevant automated checks were run locally
- changed behavior was manually tested if needed
- PR description explains behavior impact, not only implementation
- known risks, limitations, or follow-ups are called out
Reviewer expectations
Reviewers will usually look for:
- smallest correct change
- behavior preserved outside requested scope
- business rules in the right layer
- tests covering the important path
- filenames and structure that match repo conventions
- clear PR summary and testing notes
Expect review comments about missing tests, misplaced business logic, unclear abstractions, and unnecessary scope.
Future CI requirements
These are expected to become required CI gates:
- typecheck:
bun run check - tests:
bun run test - web production build:
bun run build:web - lint/format: planned follow-up once lint tooling is added
Pull request format
Use the PR template in .github/pull_request_template.md.
Every PR should include:
- short summary
- linked ticket or assignment
- what changed
- how it was tested
- risks or follow-ups