https://github.com/scrntprcrz/web-p2p-taskzz
WEB P2P Taskzz is a local-first tasks app that syncs peer-to-peer over WebRTC. Socket.IO is used only for signaling while your data stays in the browser.
https://github.com/scrntprcrz/web-p2p-taskzz
datachannel javascript local-first nodejs p2p socketio web webrtc websocket
Last synced: about 2 months ago
JSON representation
WEB P2P Taskzz is a local-first tasks app that syncs peer-to-peer over WebRTC. Socket.IO is used only for signaling while your data stays in the browser.
- Host: GitHub
- URL: https://github.com/scrntprcrz/web-p2p-taskzz
- Owner: scrntprcrz
- Created: 2025-09-01T14:15:28.000Z (10 months ago)
- Default Branch: main
- Last Pushed: 2025-09-01T16:33:21.000Z (10 months ago)
- Last Synced: 2025-09-01T17:36:24.458Z (10 months ago)
- Topics: datachannel, javascript, local-first, nodejs, p2p, socketio, web, webrtc, websocket
- Language: JavaScript
- Homepage:
- Size: 614 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# WEB P2P Taskzz — Local-First P2P Tasks
[](https://github.com/scrntprcrz/web-p2p-taskzz/blob/main/Screenshot.png?raw=1)
## What is it?
WEB P2P Taskzz is a _local-first_ task app that syncs browsers **peer-to-peer** via **WebRTC**.
**Socket.IO** is used for **signaling only**; **no data backend** — everything stays in the browser (`localStorage`).
### Highlights
- **Real P2P:** WebRTC DataChannels for data; **Socket.IO** just for signaling.
- **Local-first & offline:** uses `localStorage`.
- **Fast UX:** fuzzy search (Fuse), toasts, bulk actions.
### Architecture (brief)
- **Client:** Alpine.js + Bootstrap; local store in `localStorage`.
- **Signaling:** Socket.IO server (`server.mjs`) for `offer/answer/candidates`.
- **Data:** WebRTC DataChannels between peers; LWW convergence with `timestamp:peerId` clock.
### Quick Start
```bash
npm i
npm run dev
# → http://localhost:3000
```
## ¿Qué es?
WEB P2P Taskzz es una micro-app de tareas _local-first_ que sincroniza navegadores entre sí usando **WebRTC**.
La **señalización** va por **Socket.IO** y **no hay backend de datos**: todo vive en el navegador (`localStorage`).
### Highlights
- **P2P real:** WebRTC DataChannels para datos; **Socket.IO** solo para señalización.
- **Local-first y offline:** almacenamiento en `localStorage`.
- **UX rápida:** búsqueda difusa (Fuse), toasts, acciones en lote.
### Arquitectura (resumen)
- **Cliente (browser):** Alpine.js + Bootstrap; store en `localStorage`.
- **Señalización:** Socket.IO (`server.mjs`) para `offer/answer/candidates`.
- **Datos:** WebRTC DataChannels entre peers; convergencia LWW con reloj `timestamp:peerId`.
### Inicio rapido
```bash
npm i
npm run dev
# → http://localhost:3000
```