pttbbs
PTT BBS의 소스 코드
NitroCall 소규모 음성·화면 공유
Free, open-source voice and screen sharing for small groups (2–8). Runs in the browser on desktop and mobile — no account, no media server, end-to-end encrypted, peer-to-peer with automatic friend-bri
소셜HTML · TypeScriptGitHub @devtraldi온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기Free, open-source voice and screen sharing for small groups (2–8). Runs in the browser on desktop and mobile — no account, no media server, end-to-end encrypted, peer-to-peer with automatic friend-bridge and TURN fallback. Built with Claude Code.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
Voice and screen with friends. Device to device, encrypted, no account. Built for small groups (2 to 8 people). Free, no ads, no tracking, open source. ▶ Open NitroCall · Português A group of friends, the Nitro Poker Club, wanted one simple thing: to talk and see each other's screens (a game, a YouTube video with sound) without creating accounts, installing anything heavy, paying for a subscription, or handing their conversations to a company.README 전문 보기 ↗
A group of friends, the Nitro Poker Club, wanted one simple thing: to talk and see each other's screens (a game, a YouTube video with sound) without creating accounts, installing anything heavy, paying for a subscription, or handing their conversations to a company.
Big tools solve this by routing everything through their own servers. NitroCall does the opposite: the friends' own devices are the infrastructure. The page is a static file. Once it's open, GitHub is out of the picture: audio and screen go straight from one device to another.
There is no commercial intent. No paid tier, no ads, no data collection, no "pro version". The project is, and will stay, free and open.
You open the link ──► GitHub serves the page (~2.4 MB, once)
│
▼
Devices find each other at a public "meeting point" (PeerJS; backup: Nostr)
│
▼
The call goes DIRECT between devices (WebRTC) ← almost always
or through a FRIEND in the room acting as bridge ← when two can't reach each other
or through TURN, still encrypted ← last resort
An hour-long call does not use an hour of our server. GitHub only serves the file; the call's bandwidth is carried by the participants themselves, like a phone call between two phones.
"No server" means no media server and no server of ours storing data. To find each other, NitroCall relies on free public services:
| Service | Used for | What it sees |
|---|---|---|
| GitHub Pages | serving the page | that someone opened the site (like any website) |
| PeerJS (0.peerjs.com) | meeting point: reserving your slot in the room | an identifier derived from the room code (hash), IPs |
| Public Nostr relays | backup meeting point if PeerJS is down | signaling messages encrypted with the room key |
| STUN (Google/Cloudflare) | each device learning its own public address | your IP |
| TURN (Cloudflare) + Worker | last-resort relay | IPs and encrypted packets; it cannot hear or see anything |
The room code lives after the # in invite links and is never sent to GitHub.
| Device | Browser | How | Result |
|---|---|---|---|
| iPhone (iOS 18.7) | Safari, Chrome, Brave | real device, Wi-Fi and 4G, with bots in the room | joins, hears/is heard, 🔒, camera both ways, relay via TURN |
| Windows | Chrome, Edge | automated suites (200+ checks) and real use | everything |
| Android | Chrome (engine) | automated, emulated phone profiles | joins, camera, background/return |
| iPhone/Android | any | automated "WebKit-like" checks (strict ICE config, Safari adapter, blocked Worker) | joins |
Not verified on real hardware yet: Android phones, iPad, Firefox. If something fails there, open the
link with &debug=<any-word> at the end and send the maintainer that word — the app streams its log
live (encrypted) so the problem can be seen as it happens.
To be upfront: this project was written together with Claude by Anthropic, using Claude Code (CLI). I decided what I wanted, tested it with real friends, complained about what was bad and set the direction; Claude wrote practically all of the code, the automated tests and the docs, and helped investigate every problem (NAT, codecs, GPUs, screen quality).
NitroCall is part of my learning roadmap for Anthropic's tools: Claude Code, agents, AI-driven testing, and how to build something real and useful with them. If you're learning the same, feel free to read the history, borrow ideas and open issues.
Source code, tests (multi-browser end-to-end, an image-quality lab and a network emulator)
and build instructions live in app/. The optional TURN credentials Worker is in
app/cloudflare/turn-worker/.
MIT. Use it, copy it, change it, share it.
Nitro Poker Club · made among friends, for friends.