๐Ÿ’ธ

Monetization

Token economy, creator revenue splits, subscriptions, payments en payout systeem

Fastify 5 API PostgreSQL 16 + Drizzle ORM Lucia Auth React 19 + TanStack Query v5

๐Ÿ› ๏ธ Tech Stack

โšก

Backend

Fastify 5 API โ€” plugins voor auth, CORS, rate-limit

๐Ÿ—„๏ธ

Database

PostgreSQL 16 + Drizzle ORM โ€” type-safe queries

๐Ÿ”

Auth

Lucia Auth sessions โ€” cookie-based, server-validated

โš›๏ธ

Frontend

React 19 + TanStack Query v5 โ€” optimistic updates

๐Ÿ’ฐ Revenue Streams

Alle inkomsten verlopen via het token-systeem. Creators ontvangen hun aandeel wekelijks uitbetaald.

๐Ÿ’Ž

Tips

Direct tipping tijdens streams en posts

70% creator
30% platform
Creator+ โ†’ 80/20
๐ŸŽ

Gifts

Animated virtual gifts in livestreams

70% creator
30% platform
Creator+ โ†’ 80/20
๐Ÿ”’

Unlocks

Betaalde posts & exclusieve content

70% creator
30% platform
Creator+ โ†’ 80/20
๐Ÿ‘‘

Subscriptions

Maandelijks terugkerend inkomen

70% creator
30% platform
Creator+ โ†’ 80/20
โญ
Creator+ Tier โ€” 80% / 20%

Creators die de Creator+ status bereiken (via verificatie of bereikingsniveau) ontvangen een verbeterde split van 80% op alle inkomsten in plaats van de standaard 70%.

๐Ÿช™ Token Systeem

Gebruikers kopen tokens en besteden deze aan tips, gifts en content-unlocks. Creators ontvangen token-opbrengsten wekelijks in euro's uitbetaald.

Token Pakketten

๐Ÿช™
100 tokens
Starter pack
โ‚ฌ9,99
โ‚ฌ0.10/token
๐Ÿ’ฐ
500 tokens
Popular pack
โ‚ฌ39,99
โ‚ฌ0.08/token โ€” 20% korting
BESTE WAARDE
๐Ÿ’Ž
1.000 tokens
Value pack
โ‚ฌ74,99
โ‚ฌ0.075/token โ€” 25% korting
๐Ÿ‘‘
2.500 tokens
Pro pack
โ‚ฌ169,99
โ‚ฌ0.068/token โ€” 32% korting

Token Gebruik

๐Ÿ’‹ Tip Creator Vrij bedrag

Stuur tokens direct naar een creator tijdens stream of post

๐ŸŽ Gift sturen 10โ€“500 tokens

Animated gifts met visueel effect in de livestream overlay

๐Ÿ”’ Content unlocken Creator bepaalt prijs

Betaalde posts, foto's of video's permanent vrijkopen

๐ŸŽฐ Tip Roulette Gamification

Spin het rad โ€” kans op bonus tokens of leaderboard positie

Wallet Drizzle Schema
export const wallets = pgTable('wallets', {
  id: uuid().primaryKey().defaultRandom(),
  userId: uuid().references(() => users.id),
  tokenBalance: integer().default(0),
  eurBalance: numeric('10,2').default('0.00'),
  updatedAt: timestamp().defaultNow(),
});

๐Ÿ‘‘ Member Subscription Tiers

Viewers abonneren zich op een creator via een van de vier tiers. Hogere tiers geven meer voordelen en directe creator-toegang.

๐Ÿ”ต

Basic

โ‚ฌ9,99
per maand
  • โœ“ Exclusieve posts
  • โœ“ Subscriber badge
  • โœ“ Wekelijkse updates
  • โœ“ Chat toegang
๐Ÿ’œ

Plus

โ‚ฌ19,99
per maand
  • โœ“ Alles in Basic
  • โœ“ Priority DM's
  • โœ“ Exclusieve livestreams
  • โœ“ Custom emoji toegang
POPULAR
๐Ÿ’—

Premium

โ‚ฌ34,99
per maand
  • โœ“ Alles in Plus
  • โœ“ Persoonlijke content
  • โœ“ Maandelijkse shoutout
  • โœ“ Vroeg toegang
๐Ÿ‘‘

Elite

โ‚ฌ59,99
per maand
  • โœ“ Alles in Premium
  • โœ“ 1-op-1 videogesprekken
  • โœ“ Elite badge
  • โœ“ VIP cadeaus

๐Ÿ’ณ Payment Providers

Deposits (Viewers)

๐Ÿ’ณ
Stripe
Cards (Visa, Mastercard, Amex), iDEAL, SEPA Direct Debit
Primair
๐Ÿ”ท
Mollie
iDEAL, Bancontact, Sofort, Klarna
EU-focus
๐Ÿ’ฐ
PayPal
Snel & wereldwijd beschikbaar
Globaal
โ‚ฟ
Crypto
USDT (ERC-20 / TRC-20), ETH โ€” lage fees
Web3

Payouts (Creators)

๐Ÿฆ
SEPA Bankoverschrijving
1โ€“3 werkdagen, NL/EU banken
๐ŸŒ
International Bank Transfer
3โ€“5 werkdagen, SWIFT/BIC
โ‚ฟ
Crypto Wallet
USDT / ETH โ€” near-instant, lage fees
โฑ๏ธ Payout Voorwaarden
  • โ€ข Minimumbedrag: โ‚ฌ50
  • โ€ข Verwerking: wekelijks (iedere maandag)
  • โ€ข Methoden: SEPA ยท Bank Transfer ยท Crypto
  • โ€ข KYC verificatie vereist voor uitbetaling

๐Ÿ”Œ Fastify 5 API Endpoints

Alle wallet en payout routes zijn beveiligd via Lucia Auth sessie middleware. Database queries via Drizzle ORM op PostgreSQL 16.

POST /tokens/purchase

Token pakket kopen via Stripe / Mollie / PayPal / Crypto.

// Request body
{ "packageId": "tokens_500", "provider": "stripe" }

// Response 201
{ "checkoutUrl": "https://checkout.stripe.com/...", "orderId": "ord_abc123" }
POST /tokens/tip

Stuur tokens als tip naar een creator (Lucia Auth sessie vereist).

// Request body
{ "recipientId": "usr_xyz", "amount": 100, "streamId": "strm_1" }

// Response 200
{ "success": true, "newBalance": 400, "creatorEarned": 70 }
GET /wallets/balance

Haal token- en euro-balans op voor de ingelogde gebruiker.

// Response 200
{ "tokenBalance": 1250, "eurBalance": "284.50", "pendingPayout": "120.00" }
POST /payouts/request

Verzoek een uitbetaling (minimaal โ‚ฌ50, creator-rol vereist).

// Request body
{ "amount": 150.00, "method": "sepa", "iban": "NL91ABNA..." }

// Response 201
{ "payoutId": "pay_789", "status": "pending", "estimatedDate": "2026-04-14" }

๐Ÿ“Š Creator Earnings Dashboard

Realtime data via TanStack Query v5 โ€” automatische refetch elke 30s tijdens actieve stream.

Totale Verdiensten
โ‚ฌ2.458
โ†‘ 23% t.o.v. vorige maand
Subscribers
147
โ†‘ 12 nieuw deze maand
Tips Ontvangen
โ‚ฌ842
8.420 tokens
Beschikbaar
โ‚ฌ1.720
Opname aanvragen โ†’
// TanStack Query v5 โ€” wallet balance hook
const { data: wallet } = useQuery({
  queryKey: ['wallet', userId],
  queryFn: () => fetch('/wallets/balance').then(r => r.json()),
  refetchInterval: 30_000, // elke 30s
  staleTime: 10_000,
});