Meet Notesnook: An End-to-End Encrypted Note-Taking Alternative to Evernote
Introduction
In today's digital age, privacy and security are paramount, especially when it comes to personal and professional information stored online. Notesnook is a free, open-source note-taking application designed with user privacy and ease of use at its core. By offering end-to-end encryption and a zero-knowledge architecture, Notesnook ensures that your notes are safe and secure, setting it apart from many other note-taking apps, including Evernote. This blog post will delve into the technical aspects of Notesnook, highlighting its features, architecture, and the technology that powers it.
Overview
Notesnook is built to be a comprehensive note-taking solution, emphasizing user privacy without compromising on convenience. The app encrypts all data on the user's device using advanced cryptographic techniques, ensuring that no unauthorized party can access your notes. By going fully open-source, Notesnook provides transparency and allows users to verify the security measures in place.
Key Features
- End-to-End Encryption: All notes are encrypted using
XChaCha20-Poly1305
andArgon2
, ensuring complete privacy. - Cross-Platform: Available on web, desktop, and mobile platforms.
- Open Source: The codebase is fully open-source, allowing anyone to inspect, modify, and contribute to the project.
- User-Friendly Interface: Designed with a modern and intuitive interface for a seamless user experience.
- Rich Text Editing: Supports tables, tasks, embeds, and other advanced formatting options.
- Note Linking: Create bidirectional links between notes for better organization and navigation.
- Secure Storage: Encrypts notes at rest, adding an extra layer of security.
Technologies and Languages
Notesnook leverages a range of technologies and programming languages to deliver a robust and secure note-taking application:
- JavaScript/TypeScript: The codebase is a mix of JavaScript and TypeScript, with newer code being written in TypeScript for better type safety and maintainability.
- React: The front-end for all platforms is built using React, providing a responsive and dynamic user interface.
- React Native: Used for building mobile applications, ensuring a consistent experience across Android and iOS.
- Electron: Powers the desktop application, enabling cross-platform compatibility.
- NPM: The package manager used for managing dependencies across the project.
- Nx: A monorepo management tool that simplifies the organization and maintenance of the project's multiple packages.
Monorepo Structure
The Notesnook codebase is organized as a monorepo, which contains all the different components of the application. This structure allows for better code sharing and collaboration across the various platforms (web, desktop, mobile).
Name | Path | Description |
---|---|---|
@notesnook/web |
/apps/web | Web client |
@notesnook/desktop |
/apps/desktop | Desktop client |
@notesnook/mobile |
/apps/mobile | Android/iOS clients |
@notesnook/web-clipper |
/extensions/web-clipper | Web clipper extension |
@notesnook/core |
/packages/core | Shared core functionality between all platforms |
@notesnook/crypto |
/packages/crypto | Cryptography library wrapper around libsodium |
@notesnook/clipper |
/packages/clipper | Core functionality for the web clipper |
@notesnook/editor |
/packages/editor | Notes editor and related extensions |
@notesnook/editor-mobile |
/packages/editor-mobile | Wrapper around @notesnook/editor for mobile clients |
@notesnook/logger |
/packages/logger | Simple and pluggable logging library |
@notesnook/sodium |
/packages/sodium | Wrapper around libsodium for Node.js and Browser |
@notesnook/streamable-fs |
/packages/streamable-fs | Streaming interface for IndexedDB based file system |
@notesnook/theme |
/packages/theme | Core theme used in web and desktop clients |
Monorepo Benefits
By adopting a monorepo structure, Notesnook can efficiently manage and share code between different platforms. This approach ensures that updates and bug fixes are consistently applied across all applications, improving the overall stability and performance of the app.
End-to-End Encryption
One of the standout features of Notesnook is its robust end-to-end encryption. Let's explore how this works in detail:
Encryption Algorithms
- XChaCha20-Poly1305: This algorithm provides authenticated encryption, ensuring that both the confidentiality and integrity of the notes are maintained.
- Argon2: A key derivation function used to derive cryptographic keys from user passwords, providing resistance against brute-force attacks.
Zero-Knowledge Architecture
Notesnook's zero-knowledge architecture means that no one, not even the Notesnook team, can access your notes. All data is encrypted on the device before being sent to the cloud, ensuring that only you have the keys to decrypt your information.
Verifying Encryption
To verify the encryption claims, Notesnook provides an open-source tool called Vericrypt. This tool uses real data from your account and works offline to confirm that your notes are indeed encrypted.
Ciphertext: FxUxP-YaWBXnXPJS0EFJaY8
IV: FowXCLWJtyXG__i8MdIdM_DNDPBJvX9r
Salt: Zsaa5jNYhaXdjywLjkA2Sg
Password: my-password
Encrypted with XChaCha20 & Argon2
Features and Functionality
Rich Text Editor
The Notesnook editor supports a wide range of formatting options, making it a versatile tool for various note-taking needs. Some of the key features include:
- Basic Formatting: Bold, italics, underline, and more.
- Task Lists: Create and manage to-do lists within your notes.
- Tables: Insert and format tables to organize data.
- Outlines: Structure your notes with headings and subheadings.
- Maths & Formulas: Support for LaTeX to include mathematical expressions.
- Codeblocks: Highlight and format code snippets.
- Images & Files: Embed images and attach files to your notes.
- Markdown Support: Use markdown syntax for quick and easy formatting.
Bidirectional Note Linking
This feature allows users to create links between notes, facilitating better organization and navigation. By linking related notes, you can easily jump between ideas and maintain a cohesive structure for your information.
Secure Storage and App Lock
Notesnook offers encryption at rest, ensuring that your notes remain secure even if your device is lost or stolen. Additionally, the app lock feature allows you to protect the entire application with a password or hardware security key, adding another layer of security.
Notes Vault
The Notes Vault allows you to password-protect your most important notes, storing them encrypted on your device. This feature ensures that even if someone gains access to your device, they cannot read the contents of your vault-protected notes.
Reminders and Task Management
Keep track of your tasks and reminders within Notesnook. The app allows you to set reminders for important notes, ensuring that you never forget crucial tasks.
Open Source and Transparent
On August 9th, 2022, Notesnook open-sourced all its client applications on GitHub. This move towards transparency allows the community to review, contribute, and verify the security and integrity of the code.
Conclusion
Notesnook stands out as a secure, user-friendly, and feature-rich note-taking app. By prioritizing privacy and adopting a zero-knowledge architecture, it ensures that your notes are safe from prying eyes. Whether you're a professional needing a reliable tool for meeting notes or a student looking for an organized way to manage your study materials, Notesnook provides a secure and versatile solution.
For more information, visit the Notesnook GitHub repository and explore the full range of features and capabilities this innovative app offers.
Happy note-taking!