Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/pluv-io/pluv

Multi-platform, type-safe realtime packages
https://github.com/pluv-io/pluv

cloudflare-workers collaborative-editing crdt loro-crdt nodejs react real-time typescript websocket yjs

Last synced: 8 days ago
JSON representation

Multi-platform, type-safe realtime packages

Awesome Lists containing this project

README

        

> **Disclaimer:**
> This package is currently in preview and may have breaking changes between versions. Please wait for a `v1.0.0` stable release before using this in production.




Pluv.IO


Pluv.IO (preview)


Multi-platform, E2E type-safe realtime packages


💕 Inspired by trpc 💕 yjs 💕 and Cloudflare 💕



npm @pluv/io


GitHub


Commitizen friendly

TypeScript


Intro •
Usage •
Related •
Credits •
License

## Intro

pluv.io allows you to more easily build real-time collaborative experiences with a fully end-to-end type-safe api and the ecosystem of existing CRDT implementations such as **[yjs](https://docs.yjs.dev/)**.

**👉 See full documentation on [pluv.io](https://pluv.io/docs/introduction). 👈**

### Features

- ✅ Automatic type safety
- ✅ Basic events
- ✅ Rooms
- ✅ Authentication
- ✅ Awareness + Presence
- ✅ [CRDTs](https://en.wikipedia.org/wiki/Conflict-free_replicated_data_type)
- ✅ [Yjs](https://docs.yjs.dev/)
- ✅ **Shared Types**
- ✅ [Map](https://docs.yjs.dev/api/shared-types/y.map)
- ✅ [Array](https://docs.yjs.dev/api/shared-types/y.array)
- ✅ [Text](https://docs.yjs.dev/api/shared-types/y.text)
- ✅ [XmlFragment](https://docs.yjs.dev/api/shared-types/y.xmlfragment)
- ✅ [XmlElement](https://docs.yjs.dev/api/shared-types/y.xmlelement)
- ✅ [XmlText](https://docs.yjs.dev/api/shared-types/y.xmltext)
- ✅ [Loro](https://loro.dev/)
- ✅ **Containers**
- ✅ List
- ✅ Map
- ✅ Text
- ⬜ Tree
- ⬜ Studio (admin & developer panel)

### Runtimes

- ✅ [Cloudflare Workers](https://workers.cloudflare.com/)
- ✅ [Node.js](https://nodejs.org/)
- ✅ **PubSubs**
- ✅ [Redis](https://redis.io/)
- ⬜ [RabbitMQ](https://www.rabbitmq.com/)
- ⬜ [Kafka](https://kafka.apache.org/)
- ✅ **CRDT State Persistence**
- ✅ [Redis](https://redis.io/)
- ⬜ [Prisma](https://www.prisma.io/)

### Frontends

- ✅ [React.js](https://react.dev/)
- ⬜ [Solid.js](https://www.solidjs.com/)
- ⬜ [Vue.js](https://vuejs.org/)
- ⬜ [Svelte](https://svelte.dev/)

## Usage

Before diving into documentation, check out usage instructions for your selected platform:

### Documentation

Documentation is available at [pluv.io](https://pluv.io/docs/introduction).

## Related

- [@pluv/client](https://www.npmjs.com/package/@pluv/client) - Framework agnostic client
- [@pluv/crdt-loro](https://www.npmjs.com/package/@pluv/crdt-loro) - Loro CRDT for Pluv.IO
- [@pluv/crdt-yjs](https://www.npmjs.com/package/@pluv/crdt-yjs) - Yjs CRDT for Pluv.IO
- [@pluv/persistence-redis](https://www.npmjs.com/package/@pluv/persistence-redis) - Persistence for storage on distributed systems (Node.js only)
- [@pluv/platform-cloudflare](https://www.npmjs.com/package/@pluv/platform-cloudflare) - Adapter to run @pluv/io on Cloudflare Workers
- [@pluv/platform-node](https://www.npmjs.com/package/@pluv/platform-node) - Adapter to run @pluv/io on Node.js
- [@pluv/pubsub-redis](https://www.npmjs.com/package/@pluv/pubsub-redis) - PubSub for rooms across distributed systems
- [@pluv/react](https://www.npmjs.com/package/@pluv/react) - Integrate @pluv/client with React.js

## Credits

This software uses the following open source tooling and libraries:

- [Loro](https://loro.dev/)
- [Yjs](https://yjs.dev/)
- [Node.js](https://nodejs.org/)
- [Cloudflare Workers](https://workers.cloudflare.com/)
- [ioredis](https://github.com/luin/ioredis)
- [React.js](https://reactjs.org/)

## License

[MIT](https://github.com/pluv-io/pluv/blob/master/LICENSE)