Contributing
Thanks for wanting to help make N2O better.
Contribute code (get repo access)
Section titled “Contribute code (get repo access)”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):
- Email support@n2osync.com, or
- Open a request on GitHub issues.
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.
Contribute without code
Section titled “Contribute without code”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.
Areas we’d love help with
Section titled “Areas we’d love help with”- Cross-platform testing (especially macOS and Linux)
- Performance for large vaults (1000+ pages)
- Additional Notion block-type support
- Documentation improvements
Once you have access (dev setup)
Section titled “Once you have access (dev setup)”npm install # install dependenciesnpm run dev # watch mode (hot reload)npm test # run testsnpm run lint:fix # fix lint issuesCode style
Section titled “Code style”- TypeScript strict mode - no
anyin core code. - ESLint + Prettier - run
npm run lint:fixandnpm run format. - JSDoc on public APIs. Keep it simple; don’t over-engineer.
Commit messages
Section titled “Commit messages”Conventional commits: type(scope): description. Types: feat, fix, docs,
refactor, test, chore, perf.
Architecture
Section titled “Architecture”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 -> MarkdownMarkdown -> ObsidianParser -> N2ODocument -> NotionPusher -> Notion API- Notion and Obsidian adapters are independent; they only share models.
- Use
requestUrlfrom Obsidian for HTTP (neverfetchoraxios). - Use
processFrontMatter()for YAML changes.
License
Section titled “License”N2O will be released under the MIT License when it’s open-sourced. By contributing you agree your contributions will be licensed under MIT.