CONTRIBUTING.md
Rama main · réplica de lectura del repositorio original.
# Contributing to RayMail
Thanks for taking the time to contribute.
## Getting set up
```bash
git clone https://github.com/DeveloperSarim/raymail.git
cd raymail/web
npm install
npm run dev
```
The webmail expects a JMAP server. Either point `JMAP_ENDPOINT` at an existing
Stalwart instance, or bring the whole stack up with `docker compose up -d` and
develop against that.
## Before you open a pull request
```bash
npm run typecheck # must pass - the project is strict, including noUncheckedIndexedAccess
npm test # must pass
npm run build # must succeed
```
## What we look for
- **Keep TypeScript strict.** No `any` to make an error go away, no `@ts-ignore`
without a comment explaining why it is unavoidable.
- **Add a test when you touch a security or delivery path.** Tracking tokens,
session crypto, the click redirector and anything that sends mail all have
consequences when they break.
- **Match the surrounding style** rather than introducing a new one.
- **Explain the why, not the what,** in comments. The code already says what.
## Reporting a security issue
Please do **not** open a public issue for a vulnerability. Open a private
security advisory through the repository's Security tab instead.
## Commit messages
Short imperative subject, and a body when the change needs justification:
```
Fix open redirect in the click tracker
The destination was taken from the URL rather than the signed token, so a
crafted link could redirect anywhere while still recording a click.
```