A private table for two: talk, chat, draw and watch together.
SocialTypeScript · JavaScriptGitHub @Somansh1OnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Loading the full README. The saved excerpt is shown below.
A private table for two. Two people each type a name, connect, and can then talk (audio or video), chat, draw on a shared sheet and watch a video together. There are no accounts: you meet under a name you both agree on.Read the full README ↗A private table for two. Two people each type a name, connect, and can then talk (audio or video), chat, draw on a shared sheet and watch a video together. There are no accounts: you meet under a name you both agree on.
| Room, friend present | In a call |
|---|---|
| Drawing together | Chat on a phone |
|---|---|
server.js, Node and the ws package) and registers your name.npm install
node server.js # relay on ws://localhost:8080 (set PORT to change)
In a second terminal, point the interface at the relay and start it:
cp .env.example .env.local # NEXT_PUBLIC_BACKEND_URL=ws://localhost:8080
npm run dev # http://localhost:3000
Open the page in two browser windows (or two devices), use the invite link from the first one in the second, and pull up a chair in both. Camera and microphone only work on localhost or over HTTPS.
npm run dev:https starts the dev server with Next.js's experimental local HTTPS, which you need to try the camera and microphone from a phone on your network. Next.js downloads mkcert and creates a local certificate authority, which may ask for your password or an administrator prompt. Then open https://<your computer's address>:3000 on the phone and accept the certificate. This script has not been tested on this project.
If NEXT_PUBLIC_BACKEND_URL is not set, the interface falls back to the relay the author hosts (wss://socialspace-bakend.onrender.com). Set your own if you fork this.
Checks: npm run check runs the relay check (scripts/relay-check.js, starts server.js on a random port) and the link-validation check.
The first screen builds a link of the form /?i=<friend's name>&with=<your name>. The two values are swapped, so when your friend opens it, their name is already in the first blank and yours in the second. Names are lower-cased, spaces become dashes, only a-z 0-9 - _ are kept, up to 32 characters.
The interface. Build with the relay address in the environment, because NEXT_PUBLIC_ values are compiled into the page:
NEXT_PUBLIC_BACKEND_URL=wss://your-relay.example.com \
NEXT_PUBLIC_SITE_URL=https://your-site.example.com \
npm run build && npm start
On a hosting service that builds Next.js for you, set the same two variables in its settings. NEXT_PUBLIC_SITE_URL is only used for the link-preview image. A site served over https needs a wss:// relay.
The relay. Any host that runs Node and allows WebSockets will do. It needs only the ws package: npm install --omit=dev and node server.js, listening on PORT (default 8080). Put it behind TLS so it is reachable as wss://.
components/room.tsx, entry-screen.tsx, call-panel.tsx, chat-panel.tsx, draw-activity.tsx, watch-activity.tsx: the screens.components/websocket-provider.tsx, presence-provider.tsx, call-provider.tsx: relay connection, who is here, and WebRTC.server.js: the relay.public/sw.js: service worker (pages are network-first, build files are cached).scripts/brand/make_brand.py: regenerates the icons and share image from one SVG mark (needs Chrome and Pillow).http:/https: links into clickable links, embeds or video sources (lib/safe-url.ts).No licence has been chosen yet, so by default all rights are reserved.