Thank you for your interest in contributing to NotesReady!
NotesReady is a modern, full-featured digital note-taking and knowledge workspace engineered for deep focus, local-first reliability, and real-time collaboration.
To maintain professional software quality and data integrity, all contributions must adhere to the engineering standards and governance protocols established below.
NotesReady follows a strict, disciplined phased development lifecycle:
FEATURE / PHASE SCOPING
➔ ISOLATED PHASE BRANCH (phase-*)
➔ IMPLEMENTATION & LOCAL TESTS
➔ RIGOROUS CODE REVIEW & AUDIT
➔ 5 QUALITY GATES VALIDATION
➔ PROJECT OWNER EXPLICIT APPROVAL
➔ SQUASH / REBASE MERGE TO MAIN
- The
mainbranch is stable and protected: Direct commits and force pushes tomainare strictly prohibited. All changes must arrive via reviewed pull requests. - Phase branches isolate active milestones: Active milestone development occurs on dedicated branches (e.g.,
phase-4-organization,phase-5-auth-cloud). - No premature merges: An unapproved phase branch is never merged into
mainuntil the phase audit is accepted and the project owner explicitly authorizes the merge.
Every pull request must pass all five automated quality gates. These gates run in our GitHub Actions CI pipeline and must pass locally prior to submitting a PR:
# 1. Automated Unit & Integration Tests (Vitest)
npm test
# 2. Strict TypeScript Compilation Check
npx tsc --noEmit
# 3. Code Style & Linting (ESLint)
npm run lint
# 4. Optimized Production Build (Next.js)
npm run build
# 5. Git Whitespace & Formatting Check
git diff --check- Critical business logic, models, validation guards, and storage adapters must reside in
src/core/. - Domain models must remain platform-agnostic to support future Android, iOS, and Desktop platforms.
- Never place critical domain logic exclusively inside React components or hooks.
- If a storage backend (e.g., IndexedDB) is unavailable or encounters a disk quota error, the application must truthfully surface a visible warning rather than silently pretending changes are saved.
- Asynchronous storage transactions must resolve only upon atomic completion (
tx.oncomplete) and reject on error.
- Never log note titles, note content, or pasted text to diagnostic consoles or telemetry services.
- Catch blocks must log generic error names (
err.name), keeping user data confidential.
- The interface must never display fake simulated features (e.g., fake OCR, fake charts, nonfunctional buttons).
- If a capability is planned for a future release, it must be clearly designated with a non-misleading "Soon" badge and disabled.
- Official Brand: NotesReady (Never use "Noteapp").
- Official Logo: Selected Concept 04 geometric 'N' emblem with precision neo-grotesque wordmark.
- Logo Color Rule: Strictly monochrome. The Concept 04 emblem and wordmark remain pure black on light surfaces and pure white on dark surfaces. The logo is never tinted in Ember.
- Brand Accent System:
- NotesReady Ember:
#E85D3F(Primary CTAs, active highlights, key interactions) - Ember Dark:
#C94A30(Hover states) - Ember Light:
#FCE8E3(Subtle selection badges) - Ember Pale:
#FFF5F2(Active item washes in light mode)
- NotesReady Ember:
- Visual Distribution Ratio: 85–95% neutral foundation, 5–10% brand accent, 0% decorative gradients. Reject generic SaaS tropes (no neon glowing blobs, no purple/blue gradients, no floating 3D shapes).
- Fork or branch from the approved
mainbranch (or active phase branch as instructed). - Write clean, focused, atomic commits using Conventional Commits format (e.g.,
feat(storage): ...,fix(editor): ...,test(core): ...). - Verify all 5 quality gates locally.
- Open a pull request using the provided Pull Request Template.
- Await review and project owner approval before merging.