32 lines
1.1 KiB
Markdown
32 lines
1.1 KiB
Markdown
# Contributing to zapwall4science
|
|
|
|
## Principles
|
|
- No fallbacks or silent failures.
|
|
- No analytics; no tests added unless explicitly requested.
|
|
- Respect lint, type-check, accessibility and exactOptionalPropertyTypes.
|
|
- No `ts-ignore`, no untyped `any`, no console logs if a logger exists.
|
|
|
|
## Setup
|
|
- Node 18+, npm
|
|
- `npm install`
|
|
- `npm run lint`
|
|
- `npm run type-check`
|
|
|
|
## Coding guidelines
|
|
- Split large components/functions to stay within lint limits (max-lines, max-lines-per-function).
|
|
- Prefer typed helpers/hooks; avoid duplication.
|
|
- Errors must surface with clear messages; do not swallow exceptions.
|
|
- Storage: IndexedDB encrypted (AES-GCM) via `lib/storage/cryptoHelpers.ts`; use provided helpers.
|
|
- Nostr: use `lib/articleMutations.ts` and `lib/nostr*.ts` helpers; no direct fallbacks.
|
|
|
|
## Workflow
|
|
- Branch from main; keep commits focused.
|
|
- Run lint + type-check before PR.
|
|
- Document fixes in `fixKnowledge/` and features in `features/`.
|
|
|
|
## Accessibility
|
|
- Respect ARIA, keyboard, contrast requirements; no regressions.
|
|
|
|
## What not to do
|
|
- No analytics, no ad-hoc tests, no environment overrides, no silent retry/fallback.
|