Collaboration Guide
This document explains how the Interface Lab team should collaborate on website development with GitHub. It is written for collaborators who are still getting comfortable with Git and GitHub.
Core Principles
- Keep
mainstable and ready to build. - Create one branch for each task.
- Keep each branch focused on one clear change.
- Open a Pull Request before merging into
main. - Avoid large simultaneous edits to the same file, especially global files like
src/app/globals.css.
Suggested Responsibilities
- Product and review: decide priorities, page content, and whether a PR is ready to merge.
- UI and interaction: own visual details, component states, responsive behavior, and polish.
- Data and backend: own Supabase, permissions, APIs, auth, and data shape.
- Docs and content: own the docs hub, template notes, changelog, and tutorials.
- Codex: inspect branches, explain diffs, resolve conflicts, run builds, and help with review.
Daily Workflow
Start from the latest main:
git switch main git pull origin main
Create a task branch:
git switch -c shuyang/menu-purple
Use branch names like:
shuyang/menu-purple wang/docs-collaboration codex/fix-auth-redirect
Before pushing, verify locally:
npm run typecheck npm run build
Then commit and push:
git add . git commit -m "Update selected menu color" git push -u origin shuyang/menu-purple
Open a Pull Request on GitHub and target main.
Pull Request Template
Use a short, clear PR description:
What changed: - Updated the selected community menu color How I verified: - npm run typecheck - npm run build Notes: - CSS-only change, no business logic changed
What Rebase Means
rebase means: move your branch onto the latest main, then replay your own changes.
Before:
main: A - B - C your branch: A - X
After:
main: A - B - C your branch: X'
Common commands:
git switch shuyang/menu-purple git fetch origin git rebase origin/main
If there are conflicts, fix the files, then continue:
git add conflicted-file git rebase --continue
If the branch was already pushed, update GitHub with:
git push --force-with-lease
Only use --force-with-lease on your own feature branch. Do not force-push shared branches or main.
Merge or Rebase
- Use
rebasewhen updating your own feature branch from the latestmain. - Use GitHub merge or squash merge when the Pull Request is ready to enter
main. - Do not rebase
main. - Do not force-push
main.
Simple rule: your own branch can be cleaned up; the main line should only move forward.
After Merge
After the PR is merged, clean up locally:
git switch main git pull origin main git branch -d shuyang/menu-purple
Delete the remote branch from the GitHub PR page, or with:
git push origin --delete shuyang/menu-purple
Recommended Rhythm
1. Branch from latest main 2. Finish one small change 3. Run typecheck and build 4. Push to GitHub 5. Open a PR 6. Ask a teammate or Codex to review 7. Merge into main 8. Clean up the local branch