Inspiration

Most small streamers don't have a views problem, they have a keep-them-coming-back problem. Twitch ranks streams by current viewer count, so a new channel starts at the bottom of the list. Burnout is common, and the audience is split across TikTok, YouTube and Discord. Even when a few people do show up, nothing tells a regular who has been there for ten streams apart from a first-time visitor.

We wanted to build something simple that makes a community feel seen, without the streamer needing Affiliate status, an extension review or any coding.

What it does

Campfire turns Twitch chat into a community that grows a fire together.

  • Community streak overlay: An OBS browser-source overlay shows a campfire that grows as the whole community keeps its attendance streaks going. It shows top streaks and celebrates milestones live. Viewers type !streak in chat to see their own streak.
  • Intermission mode: When the streamer types !brb, the overlay switches to a "gather round the fire" scene with who's here, a chat vote and a countdown back. A break becomes a community moment instead of a reason to leave.
  • Personal recap: After the stream, every viewer gets a link to a page with their streak and their moments from the stream, plus a shareable card they can post on TikTok or Discord. That also helps the streamer grow off-platform.

The streamer logs in with Twitch, pastes one URL into OBS, and it works.

How we built it

  • Twitch integration: Twitch OAuth for login, and EventSub over WebSocket to listen for chat messages and stream online/offline events.
  • Backend: Node.js + TypeScript with a WebSocket server that pushes live updates to the overlay. SQLite stores attendance, streaks and recap data.
  • Frontend: A React (Vite) app serves both the overlay and the recap pages.
  • Built with Codex: We used OpenAI Codex to scaffold the project, write the EventSub handlers and streak logic, generate tests, and iterate on the overlay. We kept our prompts and commit history in the repository so the Codex workflow is visible.

Challenges we ran into

  • Keeping the overlay in sync with live chat events without duplicate or missed updates.
  • Defining a "streak" fairly: a viewer counts as present for a stream if they chat, and the streak resets only when they miss a whole stream.
  • Testing a live-stream product alone, which meant running a real test stream with a second account in chat.
  • Designing an intermission scene that is useful but doesn't distract from the streamer.

Accomplishments that we're proud of

  • A working end-to-end loop on real Twitch: chat in, streak up, fire grows, recap out.
  • Making setup a single URL in OBS, so the smallest streamers can use it.
  • Turning the usual dead time of a break into something the community does together.

What we learned

  • How Twitch EventSub and OAuth scopes work in practice.
  • That retention is a design problem as much as a technical one: small touches like being recognised by name change how a viewer feels.
  • How much faster we could move by describing a feature clearly to Codex and then reviewing and testing what it wrote.

What's next for Campfire

  • Support for YouTube and Kick chat.
  • A Discord bot that syncs streaks and recaps to a community server.
  • A streamer dashboard showing retention: who is returning, who is slipping away.
  • Hindi, Tamil and Hinglish text for streaks and recaps, so regional-language communities feel at home.
  • Beta testing with real small streamers and a paid tier for streamers who want custom fire themes and analytics.

Built With

Share this project:

Updates

Submission history