# Contributing to Nosterm Thanks for helping improve the Nosterm client. This repo is the public home for client development — the browser SPA and its container image. There is no backend here; Nostr is a client-side protocol. ## Workflow 1. Fork the repo (or branch, if you have push access). 2. Create a topic branch off `main`. 3. Make your change, keeping commits focused. 4. Open a pull request against `main`. Every push and pull request runs CI: install, lint, type-check, unit tests, and a full static build. Get these green before requesting review: ```bash npm install npm run lint # prettier --check + eslint npm run check # svelte-check (type-check) npm test # vitest npm run build # static build → ./build ``` `npm run format` auto-fixes most lint issues. ## What happens on merge Merging to `main` builds the container image and pushes it to ECR Public (`public.ecr.aws/k3k1z1x5/nosterm:latest`), so anyone can pull the latest client anonymously. Tagged releases (`v*`) publish a matching versioned image. This repo does not deploy to any live environment — promotion is handled separately. ## Guidelines - Match the surrounding code style; the linter is the source of truth. - Keep pull requests scoped to one change; smaller is easier to review. - Add or update tests when you change behavior. - Never commit secrets. All `PUBLIC_*` build args are browser-visible by design. - Relays are configured at runtime, not baked in — don't hard-code a relay as a dependency. ## Reporting issues Open an issue with steps to reproduce, what you expected, and what happened. For security-sensitive reports, please disclose privately rather than in a public issue.