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
- Open EggChat
- See what's airing live right now (pulled from the TV guide / EPG)
- Tap a program → enter the chat room for that show
- Chat in real time with everyone watching that program right now
- 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:
- One production server handles all Kronos clients
- EggChat shares the database, auth, and EPG data already running in production
- No separate infrastructure needed for EggChat specifically
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:
- Rooms are automatic — nothing to create, no admin
- 400 channels = 400 potential simultaneous rooms
- Match of the Day at 10:30pm → Room exists at 10:30pm, gone by midnight
- No one "owns" a public room
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:
- Arrival experience — animated room entry, atmosphere before chat loads (viewer count, chat vibe level)
- Sub-lanes — "Goals ⚽", "Refs 😡", "Banter 😂" mini-streams inside busy rooms for crowded shows
- Room Vibe indicator — live signal (Chill / Heated / Rowdy) based on message velocity and tone
- Program end flow — "Where is everyone going next?" suggestions as a show finishes
- Quick polls — 60-second polls ("Was that a pen?") inside rooms
- Reputation glow — visual treatment for well-liked users: subtle avatar glow and message presence
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:
- No history anxiety — you cannot "fall behind" in EggChat. The conversation is only what's happening now.
- No algorithm — rooms are sorted by what's live, not what's popular, personalised, or sponsored.
- Rooms die naturally — the end of the program is the end of the conversation. No ghost rooms, no spam.
- Built-in audience — any program airing across any channel gets a room automatically. You don't need a large community to launch; you just need people watching the same thing.
- No DMs by design — removing private messaging removes the anxiety of being "available" and keeps the app entirely about the live experience.
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:
- No subscription means no friction to download and try
- Sticker packs tied to specific shows can be time-limited (available only during a season)
- Channel groups create a natural upsell — you're already watching sport, do you want the full Sport tier?
- Private groups have social network effect built in — one person pays, they invite friends who see the value
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:
- Server is running in production on the Kronos backend
- Client app (
eggchat_client/) is in Expo dev mode — builds, runs, core flows work - Auth, rooms, messaging, friends, and coins are all functional
- Sticker packs and channel groups are wired end-to-end
- Private groups completed at the database/server level, client side needs finishing
- No App Store or Play Store listing yet
- Known polishing areas: arrival UX, room end flow, sub-lanes for high-traffic rooms
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:
cd eggchat_client && npm install && npm run web- Create a test account at the login screen
- 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
- Kronos Property→ — another Kronos-ecosystem product using the same identity/server infrastructure
- SplashWatch→ — sister app concept in the watch-together space
Next Steps to Explore
- Complete the private groups client UI (server is ready)
- Submit EggChat to App Store + Play Store as a standalone app
- Build arrival animation (makes first impression count)
- Define channel group pricing and first sticker packs
- Soft launch with a sports event to test room scaling under real traffic