Skip to content

Contributing

Thanks for wanting to help make N2O better.

If you’re a developer who wants to work on N2O, we’re happy to add you as a collaborator on the private repo. Just reach out and tell us a bit about what you’d like to work on (a bug, a feature, or an area you know well):

We’ll grant you access and help you get set up. Contributors are credited, and your work carries over when N2O goes fully open-source.

Anyone can help right now, no access needed:

  • Report bugs with clear reproduction steps. Open an issue.
  • Request features or share feedback. We read every issue.
  • Test on macOS and Linux and tell us what breaks.
  • Spread the word - a review or a mention goes a long way for a small project.
  • Cross-platform testing (especially macOS and Linux)
  • Performance for large vaults (1000+ pages)
  • Additional Notion block-type support
  • Documentation improvements
Terminal window
npm install # install dependencies
npm run dev # watch mode (hot reload)
npm test # run tests
npm run lint:fix # fix lint issues
  • TypeScript strict mode - no any in core code.
  • ESLint + Prettier - run npm run lint:fix and npm run format.
  • JSDoc on public APIs. Keep it simple; don’t over-engineer.

Conventional commits: type(scope): description. Types: feat, fix, docs, refactor, test, chore, perf.

N2O uses an intermediate document format that decouples the Notion and Obsidian adapters, so neither side knows about the other:

Notion API -> NotionParser -> N2ODocument -> ObsidianBuilder -> Markdown
Markdown -> ObsidianParser -> N2ODocument -> NotionPusher -> Notion API
  • Notion and Obsidian adapters are independent; they only share models.
  • Use requestUrl from Obsidian for HTTP (never fetch or axios).
  • Use processFrontMatter() for YAML changes.

N2O will be released under the MIT License when it’s open-sourced. By contributing you agree your contributions will be licensed under MIT.