Open source, together

Every node counts.

Nodus grows one contribution at a time, like grains of sand that each add to the whole. One person started it; anyone can add the next grain — and that does not have to mean writing code.

Each grain a contribution.

Ways in

Six ways to help.

Pick whichever fits the time you have. A precise bug report is worth more to this project than a rushed patch.

Report a bug

Reproducible steps, what you expected, what happened, your Nodus version and OS. The desktop app can open the report for you with the environment already filled in, under Suggest / Report.

Open an issue

Suggest a feature or a vault

New capabilities and whole new vault modes both start as issues. Describe the work you are trying to do, not only the button you want — the mode usually follows from the workflow.

Propose it

Translate the interface

Spanish is the source language of the desktop app; every static string also lives in the translation tables under src/i18n.*.ts. Adding or correcting a language is a self-contained, very welcome pull request.

See the tables

Improve the documentation

The Wiki lives in this repository, next to the code it documents. If something is unclear or out of date, you can fix it yourself: open a pull request with the correction and it will be reviewed.

Read the Wiki

Test a beta

Beta builds are published on the same releases page as stable ones. Before installing one, the app requires Recovery to be configured and takes a full encrypted, verified snapshot — so a beta is recoverable by design.

Releases

Send a pull request

Small and focused beats large and sweeping. Add tests for behaviour changes, reuse the patterns already in the codebase, and run the checks that cover what you touched.

See open pull requests
Development setup

Running Nodus from source.

Nodus is an Electron app built with Node.js 22 in CI. Fork the repository, then work through these four commands. Use a throwaway vault or the demo data while developing — never real personal, student or institutional material.

Before opening a pull request, run the checks that cover your change. If you touched Electron startup, IPC, the database, packaging or a major user flow, run the end-to-end suite too.

setup
# install the locked dependencies
$ npm ci
# rebuild native Electron dependencies
$ npx electron-builder install-app-deps
# start the development app
$ npm run dev

# before you open a pull request
$ npm run lint
$ npm run typecheck
$ npm test
$ npm run build
The lines we hold

Conventions a contribution has to respect.

These are not style preferences. They are the promises Nodus makes to the people who trust it with their work, and a change that breaks one will not be merged.

  • Local-first stays local-first. New network access must be explicit, documented and started by the user.
  • Privacy boundaries hold. Private content, student work, rosters, grades and credentials never go to an AI provider.
  • AI never grades a student. Nodus does not use AI to grade, rank, profile or evaluate the people it holds data about.
  • Claims keep their sources. No fabricated citations, and no silently replacing a user's evidence.
  • Behaviour changes come with tests. Focused tests for new behaviour, regression tests for fixes.
  • Nothing private in a public issue. No API keys, passwords, vault content, student data or unpublished research. Security problems go through SECURITY.md, privately.

The people building Nodus

Loading contributors…

Add the next grain.

Start with whatever is smallest. An issue that describes a real problem clearly is a genuine contribution, and it is where almost every pull request here began.