Thanks for your interest in KarbonLens — an open transparency layer for the voluntary carbon market. Contributions of code, docs, data, and bug reports are all welcome.
See README.md for prerequisites and local setup.
Short version:
# 1. Postgres 17 + PostGIS running locally
# 2. Copy env template and fill in secrets
cp .env.example .env.local
# 3. Apply migrations
npx drizzle-kit push
# 4. Start dev server
npm run devOpen a GitHub issue with:
- What you expected to happen.
- What actually happened.
- Steps to reproduce.
- Your environment (OS, Node version, browser if frontend).
Security issues: see SECURITY.md. Do not file them as public issues.
Small fixes (typos, docs, obvious bugs) — open a PR directly.
Larger changes (new features, schema migrations, API changes) — open an issue first so we can align on scope before you invest the time.
Before marking a PR ready for review:
-
npm run lintpasses. -
npx tsc --noEmitpasses (typecheck clean). - Any new user-facing behaviour has a line in
CHANGELOG.mdunder## [Unreleased]. - Commits are signed off (see DCO below).
- PR description explains the why, not just the what.
All commits must carry a Signed-off-by line. This is a lightweight
way of declaring that you have the right to contribute the code under
the project's Apache 2.0 licence — see
developercertificate.org.
Use git commit -s to add the sign-off automatically. Commits without
a DCO line will be asked to re-sign before merging.
Example:
fix(search): escape LIKE wildcards in project search
Signed-off-by: Your Name <your.email@example.com>
- TypeScript strict mode; no
anyunless justified in a comment. - Prefer small, focused PRs (under ~400 changed lines) over large ones.
- Follow the existing file layout (
app/,components/,lib/,drizzle/). - No generated/build artefacts in commits.
By contributing you agree that your contributions are licensed under the Apache 2.0 licence (see LICENSE).