EggChat — The Chat Room That Follows the Show

EggChat — The Chat Room That Follows the Show

One-Line Pitch

A companion app where chat rooms are created by what's on TV right now — you join the show, not a server.


The Problem / The Insight

Live TV is inherently social. People have always talked to each other while watching. But that conversation is either dispersed across social media noise, stuck in a private WhatsApp group, or just shouted at the screen alone.

The insight: the show is the room. You don't need to create a server, find a group chat, or know who else is watching. The program that's currently airing automatically becomes the room. When it ends, the conversation ends. No archive. No inbox. No catching up. You were either there, or you weren't.

That's EggChat. A live TV companion chat app where rooms are programs, and presence is the whole point.


How It Works

The Core Loop

  1. Open EggChat
  2. See what's airing live right now (pulled from the TV guide / EPG)
  3. Tap a program → enter the chat room for that show
  4. Chat in real time with everyone watching that program right now
  5. Show ends → room winds down and closes

There are no persistent chat histories, no inboxes, no unread counts to worry about. The app has nothing for you unless something is live. That's the point.

Architecture

EggChat runs on the Kronos server — the same Go backend that powers two other Kronos applications. This means:

The EggChat client itself is Expo / React Native (with Tamagui), meaning one codebase deploys to iOS, Android, and web.

EggChat App (Expo/React Native)
        │
        │  REST + WebSocket
        ▼
   Kronos Go Server  ◄──── also serves other Kronos clients
        │
        ▼
   Supabase (PostgreSQL + Auth + Realtime)

What Makes a Room

Each room is tied to a specific program running on a specific channel at a specific time — pulled in from the EPG (Electronic Programme Guide). When a show starts, its room opens. When it ends, the room begins a 15-minute decay before closing permanently.

This means:

Friends as Presence

Friends on EggChat exist for one reason: finding each other in rooms. You can see which room your friends are in and jump in with them. There are no DMs, no private threads. If you want to talk to your friend, you both join the same live room. That's the entire social layer.


Feature Inventory (What's Built)

The following is already implemented in the codebase, server, and database:

Feature Status
User auth (email, Supabase) ✅ Built
Real-time chat rooms per program ✅ Built
Friends / friend requests ✅ Built
Block users ✅ Built
Reputation voting (+/- per user per day) ✅ Built
Sticker packs (purchasable) ✅ Built
EggCoins (in-app currency) ✅ Built
Channel group unlocks (pay to access categories) ✅ Built
Program reminders (push notify before show) ✅ Built
Private groups (watch parties — invite-only rooms) ✅ Schema + server done
Live room participant display ✅ Built
Room message history (session-only, no archive) ✅ Built
Admin dashboard ✅ Exists (/eggchat_admin)

30+ API endpoints are active on the server under /v1/eggchat/.
14+ database tables cover every aspect of the system.

In Design / Next Phase (Not Yet Built)

The vision document covers several polish layers:


What Makes This Different

Most apps in this space make the mistake of treating TV as a background signal and chat as the product. EggChat flips it: the show is the product, and the conversation is the atmosphere.

Key differentiators:

The philosophy in one rule: "If it works offline, it's probably wrong for EggChat."


Revenue Model

EggChat monetises through EggCoins — an in-app currency that unlocks premium layers, not features. The core chat experience is completely free.

Product What It Is Price Model
Channel Group Unlock Access to a curated channel category (Sport, Entertainment, News, etc.) EggCoins one-time purchase
Sticker Packs Themed sticker packs for specific shows, channels, or moments EggCoins per pack
Private Group Creation Create a private invite-only watch party on a channel EggCoins to create
EggCoin Bundles Various coin bundle tiers In-app purchase (iOS/Android)

Why this model works:

Revenue Path

Long-term, EggChat has a second revenue layer that isn't live yet:

Advertisers pay a premium to be associated with specific rooms. A sponsor doesn't just buy a banner — they buy presence in the Match of the Day room. Their sticker pack gets surfaced. Their room theme activates. The ad is the experience.

This requires audience scale first. The coin model funds the road to get there.


Current Codebase State

The project is at an advanced prototype / pre-release stage:

The client app code is TypeScript/Expo and the server is Go. Both live in the same monorepo.


What the App Developer Needs to Know

If you're coming into this as a developer partner, here's what matters:

Repo structure:
  kronostv/
  ├── eggchat_client/   ← The app (Expo + React Native + Tamagui)
  ├── eggchat_admin/    ← Admin dashboard
  └── server/           ← Go backend (shared with other Kronos clients)
      └── internal/eggchat/   ← All EggChat server logic

Server is live at port 8121, behind Caddy proxy.
API base: https://api.krisadamstv.com/v1/eggchat/
Database: Supabase PostgreSQL + Auth
Realtime: Supabase Realtime (WebSocket)

First things to run:

  1. cd eggchat_client && npm install && npm run web
  2. Create a test account at the login screen
  3. Navigate to the Live tab — rooms appear for any program currently airing

The vision document (EGGCHAT_VISION.md in the repo) covers the full phase-by-phase UX roadmap.


Connections


Next Steps to Explore