PRs welcome. The project is maintained by Zauberware Technologies GmbH & Co. KG but external contributions are encouraged — bug reports, feature ideas, and patches.
mainis deploy-tracking on the maintainer's instance: every push tomainauto-deploys to Cloudflare.- For contributions: open a feature branch → PR → CI green → review → merge.
- For trivial fixes (typos, README), a direct push to
mainis fine if you have commit access; otherwise a PR.
npm run lint
npm run typecheck
npm run buildCI runs the same steps. Green locally = green in CI.
- The Prettier config in
.prettierrc.jsonis the source of truth. Editor autoformat is encouraged;npm run formatreformats the whole repo. - ESLint (
eslint.config.mjs) — Flat Config, TypeScript-aware. - TypeScript strict in
tsconfig.json(worker) andweb/tsconfig.app.json(UI).
- D1 migrations live in
migrations/, numbered (0001_…,0002_…). - New migration:
npx wrangler d1 migrations create tempmail <name>. The database binding name is stilltempmail— that's the unchanged infra name, not the product name. - Apply locally:
npm run db:migrate:local. - Remote migrations are applied automatically by the deploy workflow.
- Never commit real secrets.
.dev.varsis.gitignored. - Production secrets via
wrangler secret put(locally) or GitHub secrets (for CI-relevant ones likeCLOUDFLARE_API_TOKEN).
For changes to src/lib/auth.ts, the inbound pipeline, or the D1 schema:
- Explicitly request a reviewer on the PR.
- Verify against the local stack (
npm run dev+npm run seed) before merging.