Collabs is a collections library for collaborative data structures. These are data structures that look like Set
, Map
, Array
, etc., except they are synchronized between multiple users: when one user changes a collaborative data structure, their changes show up for every other user. You can use them to quickly build collaborative apps along the lines of Google Docs/Sheets/Slides, shared whiteboards, etc.
See https://collabs.readthedocs.io/
This monorepo has a folder for each published package plus related code. In particular:
- collabs is the source for the main package, @collabs/collabs. However, the actual code lives in the core and crdts folders, which are the sources of @collabs/core and @collabs/crdts, respectively; @collabs/collabs merely re-exports those two packages.
- demos/apps is the source of our demo site.
- docs is the source of our documentation site.
Run npm i
(or npm ci
, to use pinned package versions) in this folder. That will install all packages in this repo as an npm workspace, symlinked so that updates to one package are automatically made available to other packages (once they are built).
To run commands in the docs/
folder, also install its Python dependencies: pip install -r docs/requirements.txt
.
When installing dependencies, instead of running npm i <dependency>
in the relevant package's folder, you should run npm i <dependency> -w <package>
in this top-level folder. That will ensure that the dependency is installed in the workspace's top-level node_modules
folder, but it is recorded in the correct package's package.json
. See https://docs.npmjs.com/cli/v7/using-npm/workspaces#adding-dependencies-to-a-workspace.
If you are only making changes to one package, you can skip running npm i
in this directory and instead do it only in the directory for the package you are working on.