Why we hand over the repository on day one

Why we hand over the repository on day one

Most agencies keep the code on their own infrastructure until the final invoice clears. We do the opposite: on the first day of a project we push the initial commit to a repository the client owns, and every commit after that lands in the same place.

It costs us leverage, and that is the point. A client who can read the commit history can see how much work a feature actually took, which keeps our estimates honest. A client who can fire us on a Friday and hire someone else on Monday is a client we have to keep earning.

What this looks like in practice

The client creates the GitHub or GitLab organisation and invites us. Deployment credentials live in their password manager, not ours. CI runs in their account. When the engagement ends there is no migration project, because nothing needs to move.

The one thing this does require is a real README. If a new developer cannot get the project running locally in under an hour, the handover is theoretical. So we treat setup documentation as part of the definition of done, not as something to write at the end.