Git Branching Process

Branch types, workflow steps, and commit message conventions for the Deaku team.

Branch Types

mainmain

Production branch. Always deployable. Protected — requires PR with review.

Example: main
developdevelop

Integration branch. All feature branches merge here first for testing.

Example: develop
feature/*feature

New features or enhancements. Branch from develop, merge back to develop.

Example: feature/video-hls-support
bugfix/*bugfix

Bug fixes discovered during development. Branch from develop.

Example: bugfix/chat-scroll-position
hotfix/*hotfix

Critical production fixes. Branch from main, merge to both main and develop.

Example: hotfix/stripe-webhook-crash
release/*release

Release preparation. Branch from develop, merge to main when ready.

Example: release/v2.3.0

Development Workflow

1

1. Create a feature branch

Branch off from develop (or main for hotfixes) with a descriptive name.

$ git checkout develop$ git pull origin develop$ git checkout -b feature/my-feature
2

2. Develop and commit

Make small, focused commits with clear messages. Run linting and type-checking locally.

$ git add .$ git commit -m "feat: add video HLS transcoding"$ pnpm lint && pnpm type-check
3

3. Keep branch up to date

Regularly merge develop into your feature branch to avoid large conflicts.

$ git fetch origin$ git merge origin/develop
4

4. Push and open a PR

Push to remote and open a pull request targeting develop. Fill in the PR template.

$ git push -u origin feature/my-feature# Open PR on GitHub targeting develop
5

5. Code review

At least one team member reviews the PR. Address feedback with additional commits.

6

6. Merge to develop

Once approved, squash-merge into develop. The branch is automatically deleted.

7

7. Release to production

When develop is stable, create a release branch, run final QA, then merge to main.

$ git checkout -b release/v2.3.0 develop# Final testing and version bump$ git checkout main && git merge release/v2.3.0$ git tag v2.3.0

Commit Message Conventions

We follow Conventional Commits. Each commit message starts with a type prefix.

PrefixDescriptionExample
feat:A new featurefeat: add video HLS transcoding
fix:A bug fixfix: resolve chat scroll jump on new message
refactor:Code restructuring without behavior changerefactor: extract storage utils into shared package
docs:Documentation changesdocs: update API reference for video endpoints
style:Formatting, whitespace, etc.style: fix Tailwind class ordering
test:Adding or updating teststest: add visual regression tests for dashboard
chore:Build/tooling changeschore: upgrade Turborepo to v2.3
perf:Performance improvementsperf: lazy-load video player component