All twenty problems
D1What it costs the developer

You open the last project and start pasting.

Auth. File storage. Email. You wrote them already. Writing JWT refresh from scratch a sixth time is worse than copying it.

What actually goes wrong

Every project starts by harvesting the last one: the auth handlers, the upload pipeline, the mailer, the middleware stack. It is faster than writing them again and it is how a bug travels. The fix you made in project four is not in projects one, two and three, and nobody remembers which ones are missing it.

The copy also arrives without its reasons. The rate limit is there, the comment explaining why it is sixty seconds is not, so the next person tunes it to something that looks nicer.

What Grit does about it

  • A new project has authentication, sessions, roles, uploads, mail, jobs, caching and the audit chain already in it, as framework code rather than as a starter template.
  • They are upgraded by a command, so a fix made this month reaches a project started last year.
  • None of it is opt-in. An opt-in security feature is a security feature most projects do not have.

The commands

Everything below is already in this project
grit new billing
Take this month’s fixes into a project you started earlier
grit upgrade

What it does not do

An upgrade cannot touch a file you edited: it reports it instead. The more framework code you rewrite, the more of the upgrade becomes a manual merge, which is the price of owning the code outright.

Read next