Brave Sync
A client/server for Brave sync
Building
Install dependencies:
npm install
Build a bundled JS library for the client:
npm run build
Run the server:
npm run start
Testing
The sync client uses Browserify to transform Node js into browser js. To unittest
the library in a browser (default: electron), run npm run browsertest
.
To test in a different browser run npm run browsertest -- --browser chrome
.
Results appear in both the browser inspector and your terminal.
To run tests in Node, just do npm test
.
To do a basic client/server integration test against the production server, run
npm run client
and navigate to http://localhost:8000/
). The page
should not show any 'ERROR' messages and should end with 'success'.
Development
Server
server/config
contains settings; defaults in defaults.json and environment variable mappings in custom-environment-variables.json.
To configure locally you can create a file config-dev.sh
and source config-dev.sh
when needed:
#!/bin/bash
export AWS_ACCESS_KEY_ID="{stuff}"
export AWS_SECRET_ACCESS_KEY="{secret stuff}"
Run the server with file watching and autoreloading:
npm run start-dev
Client integration
To integrate Brave sync on a platform (iOS, Android, Laptop):
- Make a new branch.
- In the main browser process, implement an IPC message handler as specified
in
client/constants/messages.js
. - If webviews on your platform do not support
chrome.ipcRenderer.{send, on}
, editclient/polyfill/chrome.js
as needed to polyfill this functionality.
Building for browser-laptop
- Make sure this repo is checked out next to
browser-laptop/
- Checkout the
feature/syncing
branch in browser-laptop npm run dist
- If developing, do
npm start
in browser-laptop. Console messages from the sync client will be logged inLibrary/Application Support/brave-development/chrome-debug.log
.
Tests
To run tests you need to configure these environment variables:
- AWS_REGION
- AWS_S3_BUCKET
- AWS_ACCESS_KEY_ID
- AWS_SECRET_ACCESS_KEY