CONTRIBUTING.md
Rama main · réplica de lectura del repositorio original.
# Contributing to Havemind
Thanks for your interest. Havemind is a small, deliberately narrow project: a
self-hosted, local-first sync layer for Obsidian built for two people sharing
one vault. Contributions are welcome within that scope.
## Before you start
- Read the [README](README.md) for the architecture and the trust model.
- This is a **technical alpha**. Use disposable vaults only; never test against
a vault with real notes.
- Open an issue to discuss non-trivial changes before writing code, so we can
agree the approach early.
## Development
Requires Node.js 22 and npm 10.
```bash
npm ci
npm run build
npm run typecheck
npm run lint
npm test
```
## Ground rules
- **Test-driven.** Write a failing test first, then the implementation. New
logic ships with tests.
- **The server stays opaque.** It stores content-addressed blobs and revision
headers only, it never computes diffs, merges, or provenance. Keep that
boundary intact.
- **No new heavy dependencies.** React, Redis, PostgreSQL, message brokers,
ORMs, custom cryptography, and Kubernetes are out of scope by design.
- **No secrets in the repo.** Never commit tokens, keys, invitations, or any
private infrastructure details (addresses, hostnames, credentials).
## Pull requests
- Keep changes focused; one logical change per PR.
- Use [Conventional Commits](https://www.conventionalcommits.org) for messages
(`feat:`, `fix:`, `refactor:`, `test:`, `docs:`, `chore:`).
- Ensure `build`, `typecheck`, `lint`, and `test` all pass before requesting
review. CI runs the same checks plus the release acceptance tests.
## Code of conduct
By participating you agree to abide by the [Code of Conduct](CODE_OF_CONDUCT.md).