Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/composablesys/collabs
Collabs library monorepo
https://github.com/composablesys/collabs
Last synced: 3 months ago
JSON representation
Collabs library monorepo
- Host: GitHub
- URL: https://github.com/composablesys/collabs
- Owner: composablesys
- License: apache-2.0
- Created: 2020-06-23T18:26:56.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2024-05-02T22:22:13.000Z (6 months ago)
- Last Synced: 2024-07-20T12:47:21.974Z (4 months ago)
- Language: TypeScript
- Homepage: https://collabs.readthedocs.io/
- Size: 24.9 MB
- Stars: 246
- Watchers: 7
- Forks: 11
- Open Issues: 15
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-starred - composablesys/collabs - Collabs library monorepo (others)
README
# Collabs
**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.
## Docs
See [https://collabs.readthedocs.io/](https://collabs.readthedocs.io/)
- [API](https://collabs.readthedocs.io/en/latest/api/)
- [Published packages](https://collabs.readthedocs.io/en/latest/packages.html)## Source Code
This monorepo has a folder for each [published package](https://collabs.readthedocs.io/en/latest/packages.html) plus related code. In particular:
- [collabs](https://github.com/composablesys/collabs/tree/master/collabs) is the source for the main package, [@collabs/collabs](https://www.npmjs.com/package/@collabs/collabs). However, the actual code lives in the [core](https://github.com/composablesys/collabs/tree/master/core) and [crdts](https://github.com/composablesys/collabs/tree/master/crdts) folders, which are the sources of [@collabs/core](https://www.npmjs.com/package/@collabs/core) and [@collabs/crdts](https://www.npmjs.com/package/@collabs/crdts), respectively; @collabs/collabs merely re-exports those two packages.
- [demos/apps](https://github.com/composablesys/collabs/tree/master/demos/apps) is the source of our [demo site](https://collabs-demos.herokuapp.com/).
- [docs](https://github.com/composablesys/collabs/tree/master/docs) is the source of our [documentation site](https://collabs.readthedocs.io/).### Developing
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](https://docs.npmjs.com/cli/v7/using-npm/workspaces), 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 ` in the relevant package's folder, you should run `npm i -w ` 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](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.