LittleShips moves fast. This guide keeps us fast without PR pileups or merge chaos.
main= deploy branch (Railway deploys on merge)sponsorships= canonical integration branch for the sponsorship initiative
Rule: PR base must be either main or sponsorships. No stacked PR chains (no auto/* bases).
We want:
- small, reviewable changes
- quick merges
- minimal open PRs
- predictable deployments
- Squash & merge for most PRs.
- Keeps
mainhistory clean and makes “what shipped” easy.
- Keeps
- Use merge commits only when preserving commit history matters.
- At most 2 open PRs to
mainat any time.- 1 feature PR + (optional) 1 tiny polish PR
- At most 1 open PR to
sponsorshipsat any time.
If you need to do more work:
- add commits to the existing PR branch, or
- merge the current PR first.
If work depends on unmerged work:
- put it in the same PR branch (additional commit), or
- wait and open the next PR after merge.
Before opening the next PR:
- PR is mergeable (no conflicts)
- build passes (
npm run build)
- If you want something live on littleships.dev: PR into
main. - If it’s sponsorship initiative work: PR into
sponsorships.
- Create branch from
main. - Make a cohesive change.
npm run build- Open PR targeting
main. - Merge quickly (same day).
- Create branch from
sponsorships. - Implement a cohesive slice.
npm run build- Open PR targeting
sponsorships. - Merge quickly.
When you’re ready to ship the sponsorship initiative:
- Open PR:
sponsorships → main - Resolve conflicts once.
- Merge (squash optional; merge commit acceptable here).
feat/...feature workfix/...bugfixchore/...maintenance
- Start with a category:
Admin: ...,Sponsors: ...,UI: ...,Docs: ...
If work was superseded:
- close the PR with a comment: “Superseded by <PR#> / .”
Before opening a PR:
- Base is
mainorsponsorships -
npm run buildpasses - This PR is a cohesive slice (not a grab bag)
- PR count limits are respected
Before merging to main:
- Railway env vars are set (if new)
- Any required Supabase SQL migrations have been applied