mise (or mise-en-place) has quickly become my favourite program to use.
To put casually, it is an all-in-one solution for managing project dependencies, environment variables, running tasks.
And done so declaratively in a single mise.toml file. Still writing.