End-to-End Encrypted Note Synchronization
๐ Documentation โข ๐ Project Home โข ๐ฆ Releases โข ๐ค Contributing
English | ็ฎไฝไธญๆ
|
|
# 1. Clone the repository
git clone https://github.com/LessUp/brave-sync-notes.git
cd brave-sync-notes
# 2. Start the server
cd apps/api && npm ci && cp .env.example .env && node index.js
# 3. Start the client (new terminal)
cd apps/web && npm ci && cp .env.example .env && npm run devAccess the application:
- Client: http://localhost:5173
- Server: http://localhost:3002
cd brave-sync-notes
docker-compose up -dFor detailed setup instructions, see our Getting Started Guide.
| Shortcut | Action |
|---|---|
Ctrl/โ + S |
Save |
Ctrl/โ + B |
Toggle sidebar |
Ctrl/โ + P |
Toggle preview |
Ctrl/โ + H |
Toggle history |
Ctrl/โ + N |
New note |
Ctrl/โ + / |
Toggle dark mode |
Esc |
Close modal |
We provide comprehensive documentation in both English and ็ฎไฝไธญๆ.
| Spec | Description |
|---|---|
| Product Requirements | Feature definitions & acceptance criteria |
| Core Architecture | System design & technical decisions |
| API Specification | WebSocket & REST API definitions |
| Database Schema | Data models & storage structure |
| Testing Strategy | Test frameworks & correctness properties |
| Document | Description |
|---|---|
| Getting Started | Complete installation and setup guide |
| Architecture | System design and data flow |
| Deployment | Production deployment guide |
| Security | Encryption and synchronization |
| Contributing | Development guidelines |
| API Reference | WebSocket and REST API docs |
| ๆๆกฃ | ่ฏดๆ |
|---|---|
| ๅฟซ้ๅ ฅ้จ | ๅฎๆดๅฎ่ฃ ๅ่ฎพ็ฝฎๆๅ |
| ๆถๆ่ฏดๆ | ็ณป็ป่ฎพ่ฎกไธๆฐๆฎๆต |
| ้จ็ฝฒๆๅ | ็ไบง็ฏๅข้จ็ฝฒๆๅ |
| ๅฎๅ จๆบๅถ | ๅ ๅฏไธๅๆญฅๆบๅถ |
| ่ดก็ฎๆๅ | ๅผๅ่ง่ |
| API ๅ่ | WebSocket ๅ REST API ๆๆกฃ |
Full Documentation Site: https://lessup.github.io/brave-sync-notes/
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Clients โ
โ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โ
โ โ Browser A โโโโโบโ Browser B โโโโโบโ Mobile App โ โ
โ โโโโโโโโฌโโโโโโโ โโโโโโโโฌโโโโโโโ โโโโโโโโฌโโโโโโโ โ
โ โ โ โ โ
โ [React + Vite] [Zustand State] [AES-256 Crypto] โ
โโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโ
โ โ โ
โโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโ
โ WebSocket
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Server โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ Express + Socket.IO โ โ
โ โ โข Room Management โ โ
โ โ โข Event Distribution โ โ
โ โ โข Rate Limiting โ โ
โ โโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ โ
โ โโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโ โ
โ โ Persistence Layer โ โ
โ โ โโโโโโโโโโโโ โโโโโโโโโโโโ โ โ
โ โ โ Redis โ โ SQLite โ (Fallback) โ
โ โ โโโโโโโโโโโโ โโโโโโโโโโโโ โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
For detailed architecture, see Architecture Documentation.
# Client tests
cd apps/web && npm test -- --run
# Server tests
cd apps/api && npm test
# Property-based tests
cd apps/api && npm run test:propertybrave-sync-notes/
โโโ apps/
โ โโโ web/ # React + Vite frontend
โ โ โโโ src/ # Source code
โ โ โโโ tests/ # Test files
โ โโโ api/ # Express + Socket.IO backend
โ โโโ src/ # Source code
โ โโโ tests/ # Test files
โโโ docs/ # Documentation (EN/ZH)
โโโ changelog/ # Version history
โโโ .github/workflows/ # CI/CD configuration
| Metric | Status |
|---|---|
| Latest Version | v2.2.0 |
| Build Status | |
| Documentation | |
| License | MIT |
This project uses OpenSpec for spec-driven development with AI assistance. All changes are managed through structured proposals.
| Command | Description |
|---|---|
/opsx:propose |
Create a new change proposal |
/opsx:explore |
Explore ideas before committing |
/opsx:apply |
Implement tasks from a change |
/opsx:archive |
Archive a completed change |
/opsx:propose "feature-name" โ /opsx:apply โ /opsx:archive
| Directory | Purpose |
|---|---|
specs/ |
Stable, approved specifications (Single Source of Truth) |
openspec/ |
Change management and delta specs |
See AGENTS.md for detailed workflow instructions.
We welcome contributions! Please see our Contributing Guide for details.
Quick links:
This project is licensed under the MIT License.
No, the system automatically falls back to SQLite or in-memory storage if Redis is unavailable.
Notes up to 5MB are supported through automatic chunked transfer.
The mnemonic follows the BIP39 standard. Your encryption key is derived from these 12 words, enabling secure recovery on any device.
- Ensure the backend server is running on port 3002
- Check if the port is occupied:
lsof -i :3002 - Verify firewall settings allow WebSocket connections
- Confirm both devices use the same mnemonic
- Check browser console for errors
- Ensure WebSocket connection is established (green indicator)
- Verify Redis is running:
redis-cli ping - Or let the system fall back to SQLite automatically
- React - Frontend framework
- Vite - Build tool
- Socket.IO - Real-time communication
- Zustand - State management
- Express - Web framework
Made with โค๏ธ by LessUp