- TypeScript 40.7%
- Svelte 23%
- JavaScript 21.1%
- Lua 14.7%
- HTML 0.5%
| daemon | Merge remote-tracking branch 'origin/main' | |
| server | Add relevant server readme | |
| vim-plugin | [daemon] Detect buffer close and continue writing changes to file directly | |
| README.md | Fix directory name in README | |
Ethersync
Ethersync enables real-time co-editing of local text files. You will be able to use it for pair programming or note-taking, for example.
Currently, we have a simple working prototype, but we're still at the beginning of development. Thus be warned, that everything is in flux and can change/break/move around quickly.
Components
Ethersync consists of three components:
- A central server is responsible for connecting people.
- Every participant needs a daemon, that runs on their local machine, and connects directories to the server.
- Editor plugins connect to the daemon, send it what you type, and receive other peoples' changes. Currently, there's a plugin Neovim, but other editor integrations are planned.
Setup
Server
- find the source in server TODO
Install the dependencies...
cd server
npm install
...then start Rollup:
npm run dev
Navigate to localhost:5000. This UI can be used for development/debugging purposes, but isn't needed. The important part is, that this provides a Websocket Server, which has to be configured in the daemon.
Daemon
- the source is in daemon
After the usual npm install, to start up the daemon with a directory (say, output) you need a config file in .ethersync/config:
cd daemon
npm install
mkdir -p output/.ethersync # the output directory contains the locally synced files and a config
echo "etherwiki=http://localhost:5000#playground" > output/.ethersync/config # where localhost is the server instance from above
To run it, start with:
npm run ethersync --directory=output
Neovim Plugin
Install the plugin using your favorite plugin manager. For example, with Lazy, this is the configuration:
{
dir = path/to/ethersync/vim-plugin",
}
Sponsors
Thanks to NLNet for funding this project through the NGI0 Core Fund.
License
TBD