Real-time web-based collaborative coding
- Syntax highlighting code editor (using Ace)
- Live edit merging via operational transforms
- Load files from GitHub repositories and save changes as a patch
- Audio and video through WebRTC
Pairjam is separated into client and server components.
The client consists solely of static files, which means it can be served quickly and cheaply on a CDN (pairjam.com assets are hosted on GitHub pages). The client uses WebSockets for communication, WebRTC for peer-to-peer audio / video, and React.js.
The server is a Node.js WebSocket server that can run on one or more separate machines.
Running your own
To get Pairjam running on your local machine, first clone the repository
git clone https://github.com/neerajwahi/pairjam.git
Next, install npm dependencies
cd server && npm install cd ../client && npm install
To integrate the server with GitHub, a GitHub API public key and secret are needed. These should be placed in the GITHUB_CLIENT_ID and GITHUB_CLIENT_SECRET environment variables before running the node server.
If the server does not find these env variables upon loading, rate requests will be limited to GitHub's unauthenticated limit.
Once setup has been completed, run the WebSocket server:
cd ../server && node app.js
Then in a new tab, serve the static files from the
cd ../client/public && python -m SimpleHTTPServer 8000
Instructions coming soon!
Pairjam uses gulp.js for its build system.
If you're working on the client, run
cd /path/to/client gulp && gulp watch
This will build the app and watch any .jsx or .scss files for changes.
The server won't reflect your changes until you re-run it. To watch the server and re-run it automatically try nodemon.