diff --git a/README.md b/README.md index dcdcfd9..e7d49a7 100644 --- a/README.md +++ b/README.md @@ -1,17 +1,17 @@ # Polly - P2P Poll App -A lightweight, real-time collaborative polling application that uses Yjs and WebRTC to allow multiple users to create options, vote, and see live results without a centralized database or back-end server. +A lightweight, real-time collaborative polling application that uses [Yjs](https://yjs.dev/) and [WebRTC](https://de.wikipedia.org/wiki/WebRTC) to allow multiple users to create options, vote, and see live results without a centralized database or back-end server. ### 🚀 Features -- Real-time Collaboration: Instant synchronization of poll titles, options, and votes across all connected peers using CRDTs (Conflict-free Replicated Data Types). -- P2P Connectivity: Uses WebRTC via y-webrtc for direct browser-to-browser communication. +- Real-time Collaboration: Instant synchronization of poll titles, options, and votes across all connected peers using [CRDTs (Conflict-free Replicated Data Types)](https://en.wikipedia.org/wiki/Conflict-free_replicated_data_type). +- P2P Connectivity: Uses WebRTC via [y-webrtc](https://github.com/yjs/y-webrtc) for direct browser-to-browser communication. - Dynamic Voting: * Add new options on the fly. - Live-updating progress bars and vote tallies. - Automatic sorting of options by vote count. - Voting Deadline: A shared countdown timer (2 minutes) that locks the poll for all participants once expired. - Awareness & Presence: A status bar showing connection health and the number of active peers currently in the room. -- Local Persistence: Uses y-indexeddb to save the poll state locally in your browser, ensuring data isn't lost if you refresh or lose connection. +- Local Persistence: Uses [y-indexeddb](https://github.com/yjs/y-indexeddb) to save the poll state locally in your browser, ensuring data isn't lost if you refresh or lose connection. - No Setup Required: Unique "rooms" are created via URL parameters, making it easy to share a link and start a poll instantly. ### 🛠 Tech Stack @@ -41,16 +41,16 @@ You can simulate a second user by opening an incognito Tab. ```npm run dev``` - Deployment: - - The code currently uses an Y-Webrtc-Signaling-Server at localhost that starts with `npm run dev` for development (PORT=4444 npx y-webrtc ). - - To deploy the App, you need to set up a publicly available signaling server and set the address in the `synx.ts`. E.g. with Docker: + - The code currently uses an Y-Webrtc-Signaling-Server at localhost:4444 that starts with `npm run dev` for development. + - To deploy the App, you need to set up a publicly available signaling server and set the address in the `synx.ts`. E.g. with Docker using the [funnyzak/y-webrtc-signaling](https://hub.docker.com/r/funnyzak/y-webrtc-signaling) image: - ```version: '3.1' -services: - y-webrtc-signaling: - container_name: y-webrtc-signaling - image: funnyzak/y-webrtc-signaling:latest - restart: always - network_mode: bridge - ports: - - "4444:4444" - dns: 8.8.8.8``` \ No newline at end of file + ```version: '3.1' + services: + y-webrtc-signaling: + container_name: y-webrtc-signaling + image: funnyzak/y-webrtc-signaling:latest + restart: always + network_mode: bridge + ports: + - "4444:4444" + dns: 8.8.8.8``` \ No newline at end of file