Thank you for wanting to help. NowPath is a small, careful project for people in hard moments, so a few things matter more here than in a typical app.
- Read NOWPATH_SPEC.md — it is the source of truth for what NowPath is, is not, and will never do.
- The commitments in the README's "What NowPath will never do" are non-negotiable. Please don't propose features that detect emotions, score recovery, use AI to interpret the user, contact anyone automatically, or send content off-device.
Requirements: Node 20+ and npm.
npm install
npm run dev # http://localhost:5173Before opening a pull request, all of these must pass:
npm run typecheck
npm test
npm run check:lang
npm run buildEvery user-facing string lives in src/strings/en.json with a target reading level:
- A2 for anything inside the Back to Now flow (a person may be dissociating, exhausted, or reading in a second language).
- B1 everywhere else.
npm run check:lang enforces sentence length, word length, and a short list of banned idioms. If you add or change a string, run it. Prefer one idea per sentence, plain words, and no metaphors on buttons.
- Accessibility is a requirement, not a nicety. Large touch targets, keyboard operability, reduced-motion support, and correct semantics/ARIA.
- No new runtime dependencies without discussion. The trust base is deliberately tiny.
- Privacy by construction. Nothing user-authored should ever leave the device except through a deliberate, user-initiated export.
- Keep motion calm. Opacity-only transitions; nothing that flashes, pulses, or races.
- Match the surrounding code's style, naming, and comment density.
For bugs, include the browser/OS and steps to reproduce. For anything touching crisis resources or safety copy, please flag it clearly — those changes get extra scrutiny.
By contributing, you agree that your contributions are licensed under the project's MIT License.