# Thick

> Thick is a self-hosted live-streaming and creator-community platform with full source code included.

Source page: https://saascode.ai/products/thick
Machine-readable record: https://saascode.ai/products/thick.md

One-time purchase · full source code · self-hosted by the buyer.

Price: $499 (one-time)

## How to read this document

Written for a model auditing this product on a buyer's behalf. Two labels
appear throughout and they mean different things:

- **measured** — produced by a script reading the product's own source tree
  or database at the stated date. The method is named beside each number.
- **stated** — written by the seller. True or not, it is a claim, and this
  document does not ask you to treat it as evidence.

The live demo is the strongest verification available from outside: it runs
the same source a buyer receives. Nothing to sign up for — the public side is
open, and the seeded credentials below get you into each role.

## What it is

Thick is a self-hosted live-streaming platform you own and brand: your own Twitch, running on your own infrastructure. You run the media server and the CDN account yourself, so your infrastructure cost tracks how many people broadcast, not how many people watch.

## Live demo

Two doors into the same running instance, and the same source a buyer
receives. There is no account to create; the public side is open, and the
seeded credentials below sign you into each role.

- **Guided (recommended):** https://saascode.ai/demo/thick — our shell, with a role switcher and
  the credentials in the menu. Best for a person.
- **Direct:** https://thick.saascode.ai — the product on its own, no chrome.
  Best when you are relaying steps to someone, or fetching a page.

4 roles seeded on the demo (of the 6 the schema defines — the build data below counts them all). Credentials are published deliberately: these
are demo accounts on a public demo instance, and a reviewer who cannot get
in cannot verify anything.

- **Channel moderator** (`channel_moderator`) — `mod1@demo.com` / `demo123`
  Moderates chat with bans, timeouts, slow mode, and pins.
- **Streamer** (`streamer`) — `streamer1@demo.com` / `demo123`
  Goes live and manages a channel, community, and earnings.
- **Viewer** (`viewer`) — `viewer1@demo.com` / `demo123`
  Watches, chats, follows, subscribes, and uses the wallet.
- **Platform owner** (`super_admin`) — `admin@demo.com` / `demo123`
  Runs streamers, broadcasts, economy, and moderation.

Or open a role directly: https://saascode.ai/demo/thick?role={role}

## Measured build

*measured — each number names the method that produced it.*

- **roles: 6** — distinct roles accepted by the role CHECK constraint: admin, channel_moderator, member, streamer, super_admin, viewer
- **tables: 80** — distinct CREATE TABLE statements across every applied migration
- **migrations: 116** — .sql files in supabase/migrations
- **page modules: 114** — files named page.tsx under src/app, excluding node_modules and .next
- **source lines: 161,886** — lines of code (comments and blank lines excluded) across 1207 TypeScript files (146,001) and 142 SQL files (15,885); node_modules and .next excluded
- **api route files: 265** — files named route.ts under src/app/api
- **http operations: 361** — exported HTTP method handlers across those files, de-duplicated per file, OPTIONS excluded as CORS preflight
- **schema graph: 80 tables, 126 relationships** — parsed from the applied migrations

A large number here is scope, not quality. It says the product models a
real domain rather than a CRUD skeleton; it says nothing about code
quality, duplication, test coverage or maintainability, and should not be
read as if it did.

Release: v1.0.0 · built 2026-08-06

## Complete capability inventory

23 capabilities. Each summary is *stated* — selected from the
product's own buyer documentation, or written by the seller where marked.

### Thick platform overview — what it is, who does what

- **Custom emotes** — A switched-off capability returns "not found" rather than "forbidden", so a disabled area cannot be probed from the outside.
- **Open streamer signup** — There is deliberately no "anyone can broadcast instantly" mode. Instant open broadcasting would require content fingerprinting and an abuse-handling operation that this product does not include.
- **Discord sign-in (Discord OAuth sign-in through the configured social-provider registry)** *(seller-authored)* — Discord OAuth sign-in through the configured social-provider registry
- **Connect API** — A switched-off capability returns "not found" rather than "forbidden", so a disabled area cannot be probed from the outside.

### Live streaming, replays and discovery

- **Live streaming (Live streaming with signed admission, hashed stream keys, and manifest-driven HLS playback)** *(seller-authored)* — Live streaming with signed admission, hashed stream keys, and manifest-driven HLS playback
- **VOD replays** — Recording is automatic: when vod_replay is on, the live broadcast is captured, pulled from the media server, remuxed to HLS with a thumbnail, and uploaded to your storage zone. Each replay job carries an explicit state — queued, processing, succeeded, failed, or retryable-failed — along with its processing log and error code, so a replay that never appeared can be diagnosed rather than guessed at.
- **Viewer analytics**
- **Advanced analytics**

### Live chat and moderation

- **Live chat** — Every live broadcast has a chat room next to the player. Messages fan out in real time to everyone watching, including signed-out viewers, who can read but not post. Posting requires an account. The whole surface is controlled by chat_enabled.
- **Stream moderation**
- **Slow mode by default** — Every live broadcast has a chat room next to the player. Messages fan out in real time to everyone watching, including signed-out viewers, who can read but not post. Posting requires an account. The whole surface is controlled by chat_enabled.
- **Chat moderation rules** — Each rule has a position, so ordering is explicit, and an active toggle, so you can disable one without deleting it and losing its configuration.

### Channel pages, feeds, follows and direct messages

- **Follows and live-now alerts (Channel follows with live-first discovery and configurable go-live automations)** *(seller-authored)* — Channel follows with live-first discovery and configurable go-live automations
- **Streamer feed** — The feed is a chronological wall, not a course or a classroom. A streamer composes at /studio/feed/compose (text plus media) and manages their own posts at /studio/feed. Followers read and comment; comments are threaded and load page by page.
- **Comments** — The feed is a chronological wall, not a course or a classroom. A streamer composes at /studio/feed/compose (text plus media) and manages their own posts at /studio/feed. Followers read and comment; comments are threaded and load page by page.
- **Per-post content gating** — Gating is resolved in the database, not in the page, so a locked post cannot be read by calling the API directly — a visitor who does not qualify sees the post greyed out with its requirement, never its content. Streamers set a default for new posts at /studio/settings/gating. The whole capability can be switched off with content_gating_enabled.
- **Direct messages** — Thick includes one-to-one messaging between a viewer and a streamer. It is deliberately narrow: no group threads, no shared inbox, no typing indicators. Messages arrive live, and each message records when it was read.
- **Admin DM oversight** — Thick includes one-to-one messaging between a viewer and a streamer. It is deliberately narrow: no group threads, no shared inbox, no typing indicators. Messages arrive live, and each message records when it was read.

### Wave-coin economy — wallets, tips and channel subscriptions

- **Wave-coin wallet** — Every account has one wallet holding a whole-number coin balance — no fractions. Behind it sits a full ledger: every credit and every debit is a row with the amount, the resulting balance, a reason (purchase, tip, subscription, refund, cash-out) and a reference to whatever caused it.
- **Channel subscriptions** — These are viewer-to-streamer subscriptions paid in coins, not platform plans you sell. Each streamer defines their own tiers at /studio/channel-subs/tiers — name, monthly coin price, perks and ordering — with 500, 1000 and 2500 coins per month as the suggested three-tier starting point.
- **Tipping** — A viewer can tip a streamer any amount they hold, with an optional message, either from the channel or during a live broadcast, where the tip pops up on screen in real time. The tip debits the viewer, credits the streamer and raises an event other automations can react to. Switch: tipping_enabled.
- **Leaderboards and badges** — Tips and subscriptions accumulate into a per-channel supporter standing: total coins spent, a tier code and badges. Each channel gets a capped top-100 leaderboard, and streamers see their top supporters on the earnings screen. Standing tiers (label, minimum spend, colour, icon) are configuration, so you can name and shape them for your community. Switch: gamification_enabled.

### Cash-out queue and payouts

- **Cash-out queue** — A streamer requests a cash-out from /studio/earnings/cashout: an amount in coins plus their payout details. You work the queue at /admin/cashouts, tabbed by status, with a detail view per request at /admin/cashouts/[id] showing the streamer, the amount, their wallet history and the audit trail of every state change.

## What each system gives the operator

*stated.*

- **Thick platform overview — what it is, who does what** — Run a branded streaming business with the platform and audience under your control.
- **Live streaming, replays and discovery** — Grow live programming without surrendering margin whenever another viewer presses play.
- **Live chat and moderation** — Keep fast live conversations useful while creators and moderators share clear control.
- **Channel pages, feeds, follows and direct messages** — Give every channel a community that stays active between broadcasts.
- **Wave-coin economy — wallets, tips and channel subscriptions** — Turn viewer support into recurring channel revenue, tips, and visible loyalty.
- **Cash-out queue and payouts** — Keep creator cash-out requests visible and deliberate before money moves.

## The problems it was built to solve

*stated — the seller's argument, given in full so you can judge it.*

### Audience growth stops creating a bigger platform tax.

Audience growth should improve the business, but metered platforms can turn every successful broadcast into a larger bill. That changes programming decisions: teams hesitate to promote a stream, creators worry about spikes, and a breakout event becomes an infrastructure surprise instead of a win. The problem compounds when the brand and audience relationship also belong to the host. A streaming business needs room to grow without treating every new viewer as a new tax or every format decision as permission requested from somebody else's platform.

### Each channel keeps its community active between broadcasts.

A live audience is intense and temporary. When the broadcast ends, conversation usually scatters across unrelated tools, the creator loses the context that made the moment valuable, and viewers have no obvious reason to return before the next show. That weakens both retention and the creator's relationship with the people who support them. The operating problem is continuity: each channel needs a place where followers can keep up, respond, and reconnect without rebuilding the community from zero every time the live indicator turns on.

### Creator support becomes one understandable channel economy.

Creator support becomes difficult to understand when subscriptions live in one system, tips in another, status in a third, and payout requests somewhere else again. Viewers cannot see how their support adds up, creators cannot recognize their strongest supporters, and the platform team spends its time reconciling disconnected records. The cost is more than administration: each extra step makes a spontaneous act of support less likely, while creators receive a fragmented picture of what their audience values and whether the business they are building is actually moving.

### Live conversation stays useful as the audience accelerates.

Live chat can go from welcoming to unusable in minutes. The failure is rarely one dramatic incident; it is the accumulation of spam, repeated messages, hostile participants, and small delays while everyone assumes somebody else is handling it. Creators lose focus, viewers stop contributing, and moderators burn time reacting without a shared boundary for what belongs in the room. A growing live platform needs moderation to remain a normal operating job, not an emergency that begins only after the conversation has already driven good participants away.

## What it takes to run it

*stated — external services the buyer supplies and pays for directly.*

- **Node host and Supabase** (required) — Run the Next 16.2.10 application with React 19.2.3 and a Supabase project.
- **Streaming server** (required) — Run the media server that receives and transcodes incoming broadcasts.
- **Scheduled runner** (required) — Execute the seven jobs declared in `vercel.json`; another host must wire the same schedules.
- **Email delivery** (required) — Configure one shipped provider: Brevo, Mailgun, Resend, SendGrid, or SMTP.
- **Upstash and Sentry** (optional) — Optional cache/rate-limit and error-monitoring services exposed by the application.

## FAQ

**What exactly do I receive after purchase?**

The complete source repository behind the live demo — 161,886 lines across the application and its database, 80 tables defined by 116 migrations that the shipped scripts apply for you, plus the seed data, the demo accounts and the setup documentation. Not a subset and not a scaffold: the same code that runs the demo you just used.

**Is the live demo the same product whose source I receive?**

Yes. The Thick demo runs the delivered release (v1.0.0), and the build figures on this page are measured from that same source — not from a showcase build kept separately.

**Can I test every account role before buying?**

Yes — all 4 of them: Channel moderator, Streamer, Viewer, Platform owner. Each one is seeded in the live demo and reachable from the role board above, so you can inspect the product from the customer's side, the agent's side and the administrator's side before you decide.

**Is this a complete product or a starter template?**

Complete. 114 page modules and 361 HTTP operations, with authentication, roles, billing, an administration panel, background jobs and seeded demo data all wired and running. A template gives you the shape of an application; this is one you can deploy and start operating.

**Can I rebrand and modify it?**

Yes, without asking. The name, identity, copy, styling and code are yours to change. Rebranding and operating it as your own service is exactly what the licence is for.

**What does the licence allow?**

A perpetual, worldwide, non-exclusive, non-transferable licence to the product you bought and to every update released for it. The Standard licence covers one business — yours. If you deploy for clients, the Client licence covers up to five. You can modify it, rebrand it, deploy it and charge your own customers.

**Can I resell the source code?**

No. Reselling, redistributing, sublicensing or giving away the source itself is not permitted under either licence. You build and deliver products with it — the code stays with you.

**What services and ongoing costs are required?**

You bring your own accounts, so we never mark anything up and there is no ongoing cost to us beyond the purchase. Required: Node host and Supabase, Streaming server, Scheduled runner, Email delivery. Optional: Upstash and Sentry. The table above says exactly what stops working without each one; most have usable free tiers at low volume.

**How difficult is deployment?**

Two ways, and most buyers use the first. The installer in your saascode dashboard walks it: you create free accounts at Vercel and Supabase, connect them, and it provisions the database, applies 116 migrations, seeds the data, deploys and verifies the result — you watch the steps go green. Or take the source and do it yourself with the shipped scripts and docs, which is the same sequence run by hand.

**What updates and support are included?**

Updates to that product for as long as we maintain it — no renewal fee and no expiry date on your access. Support covers download problems, defects in the code as shipped, questions about what the product does and how it is structured, and licence questions. It does not cover debugging your own modifications, building features for you, or setting up your hosting and third-party accounts.

**Why does a complete codebase cost $499?**

Because it was built once and is distributed many times. SaaSCode builds each product and ships the same finished release through the catalog, so the price reflects repeatable distribution — not a reduced codebase, an unfinished template, or what the same work would cost commissioned.

**Do I need to be a developer?**

No, for the normal path. You create free accounts at Vercel and Supabase, connect them to the installer in your saascode dashboard, and it does the deployment for you — provision, migrate, seed, deploy, verify. What it asks of you is creating two accounts and copying a token, not writing code. If you would rather deploy it yourself, or host it somewhere else, the full source and the scripts are yours to do that with. Running the product day to day needs no technical skill at all: that happens through its own interface, which is what the demo shows.

## Licence

The buyer receives the complete source and may deploy, modify and operate it
as their own SaaS, charging their own customers. The source itself is not
resold or redistributed: you build and deliver **with** it, you do not sell **it**.

## What this document cannot tell you

Stated plainly because a review that misses it is not a review:

- code quality, duplication, or architectural consistency
- test coverage
- query performance under load
- security posture beyond what the stack implies
- how maintainable it will be in a year

Scope is measurable from outside; implementation quality is not. Anyone
evaluating this should say so rather than infer quality from size.

## Written about it

- [Thick: a source-owned live-streaming community](https://saascode.ai/inside/thick-source-owned-live-streaming-community.md)
- [Live-streaming software in 2026: choose what remains after the broadcast](https://saascode.ai/inside/live-streaming-software-2026-after-the-broadcast.md)
- [Thick vs Uscreen: own the streaming platform or use a managed service](https://saascode.ai/inside/thick-vs-uscreen-owned-streaming-platform-managed-service.md)

## Links

- Catalog page: https://saascode.ai/products/thick
- Product record: https://saascode.ai/inside/products/thick
- Live demo: https://thick.saascode.ai
- Every product: https://saascode.ai/llms.txt

