Workflow
Conventions on running checks, committing, and opening pull requests.
Day-to-day work follows fixed rules — from how branches are cut to how dependencies are pinned.
Branches
Section titled “Branches”Stable code lives on main, the only persistent branch. Every other branch is scoped to a single change and named freely.
Commits
Section titled “Commits”Each commit on a short-lived branch captures one atomic change. Every commit is signed. Commit messages follow Conventional Commits.
What stays out of version control is listed in .gitignore — filtered from every commit automatically.
Pull Requests
Section titled “Pull Requests”Every change reaches main through a pull request. Force pushes are forbidden; merges into main use squash only.
Dependencies
Section titled “Dependencies”Dependencies are installed using bun install. With the linker set to isolated, each workspace’s node_modules exposes only its declared dependencies — preventing phantom imports, whether from sibling workspaces or anywhere else.
New dependencies are added using bun add <dependency-name>. With the exact option enabled, each addition is pinned to a specific version instead of a version range — preventing unwanted updates on later installs.
Dependencies are updated using bun update --interactive --recursive. With minimumReleaseAge set to three days, packages younger than that are skipped — a safeguard against installing compromised releases before they’re flagged.
Configuration lives in bunfig.toml and applies to every install — no per-command flags required.
Local Development
Section titled “Local Development”Local development is started with bun dev. Resources are provisioned on the cloud while requests are proxied to a Worker running locally in workerd — wired together by Alchemy’s Local Development.