Genesis-env

STOP BREAKING YOUR .ENV FILES.

terminal
$â–‹

Define in the repo. Generate locally. Onboard the whole team the same way.

How it works

Three steps to configuration that just works.

Commit a template, run generate from the project root, and onboard the whole team on the same flow. No mystery commands, no stale docs.

01

Define

Commit a `.env.template` in your repo. That one versioned file lists every key your app expects, without secrets.

02

Generate

Run `genv` from the project root, answer the prompts once per key, and get a local `.env` written from the template.

03

Onboard

Every developer runs the same command against the same template. Same prompts, same shape, so new hires are not reverse engineering Slack screenshots.

The outcome

One source of truth. Zero surprises.

Bootstrap once with genv init: creates the starter .env.template, and ensures .env is ignored by git (creating or updating .gitignore automatically).

Fewer errors

One template and one generate flow means fewer missing keys and less copying and pasting drift between laptops.

Aligned teams

Everyone pulls from the same template. Onboarding is running the CLI, not chasing tribal knowledge.

Faster setup

Regenerate `.env` in seconds when keys change instead of editing ten local variants by hand.

Production confidence

Ship knowing every developer materialized their env from the committed template your team already agreed on.

Genesis-env is not a tool.

It's a configuration discipline.

Genesis-env keeps your environment variables aligned with the committed template so drift and missing keys are less likely to ship. It's the difference between chaos and control.

Workflow

From template to local.env

One file describes every key your app needs. Developers run the CLI to materialize a real .env with their own values, without guessing names or copying and pasting from Slack.

Template (in repo)
# .env.template (committed; no secrets)
DATABASE_URL=
API_KEY=
STRIPE_WEBHOOK_SECRET=
NODE_ENV=development
Committed to your repository
Generated (on your machine)
# .env (local; gitignored)
DATABASE_URL=postgres://localhost:5432/app
API_KEY=sk_live_xxxx
STRIPE_WEBHOOK_SECRET=whsec_xxx_
NODE_ENV=development
Local values. Ignored. In your control.

Example values only. Your real .env stays local and out of version control.

Virtual tour

Explore Genesis-env in the browser. Run commands and see output live, like an interactive exhibit.

$ genv init
✔ .env.template created
✔ .gitignore created
✔ .env added to .gitignore

$ genv
✔ Found .env.template
? DATABASE_URL: (postgres://localhost:5432/app)
? API_KEY:
? NODE_ENV: (development)
✔ .env written successfully.

$ genv validate
✔ .env matches .env.template
Open Playground

Ready to enforce configuration discipline?

Start with the playground. Full documentation is in the nav.