Complete system design, monorepo structuur, tech stack en data flows van het TeezU v3.0 platform
TeezU v3.0 is gebouwd als een pnpm monorepo met Turborepo voor build-orchestratie.
De codebase is opgesplitst in apps/, services/ en packages/ voor maximale herbruikbaarheid en type-safety over de volledige stack.
TeezU Monorepo (pnpm workspaces + Turborepo)
β
βββ apps/
β βββ web/ β React 19 + Vite 7 + Tailwind CSS 4
β (main PWA frontend, mobile-first)
β
βββ services/
β βββ api/ β Fastify 5 + Drizzle ORM + PostgreSQL 16
β (backend REST API + Socket.IO)
β
βββ packages/
βββ ui/ β Shared React components (Radix UI + CVA)
βββ types/ β Shared TypeScript types + Zod schemas
βββ api-client/ β Type-safe API client (fetch wrapper)
βββ utils/ β Shared utilities (formatters, helpers)
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β FRONTEND (apps/web) β
β React 19 Β· Vite 7 Β· TypeScript 5.9 Β· Tailwind CSS 4 β
β Zustand 5 Β· TanStack Query v5 Β· React Hook Form + Zod β
β Socket.IO Client Β· WebRTC Β· PWA (VitePWA) β
ββββββββββββββββββββββββββββββ¬βββββββββββββββββββββββββββββ
β REST + WebSocket
ββββββββββββββββββββββββββββββ΄βββββββββββββββββββββββββββββ
β BACKEND (services/api) β
β Node.js 22 Β· Fastify 5 Β· TypeScript 5.9 β
β Drizzle ORM Β· Lucia Auth Β· Socket.IO Β· Zod validation β
ββββββββ¬βββββββββββββββ¬βββββββββββββββ¬βββββββββββββββββββββ
β β β
ββββββββ΄βββββββ βββββββ΄βββββββ ββββββ΄βββββββββββββββββββ
β PostgreSQL β β Redis β β MongoDB β
β 16 β β (RT state β β (AI configs / β
β (relational)β β sessions) β β chat logs) β
βββββββββββββββ ββββββββββββββ ββββββββββββββββββββββββββ
β β
ββββββββ΄βββββββ βββββββββββ΄βββββββββββββββββββ
β S3 / β β Vector DB β
β Cloudinary β β (Pinecone / Weaviate) β
β (media) β β (AI matching / search) β
βββββββββββββββ ββββββββββββββββββββββββββββββ
useAppStore (persist middleware for ui slice)
βββ user slice β { profile, role, session } actions: setUser, clearUser
βββ wallet slice β { balance, transactions } actions: updateWallet
βββ ui slice β { sidebar, language, theme } actions: toggleSidebar, setLanguage
βββ chat slice β { activeRoom, messages, typing } actions: sendMessage, setTyping
Client (TanStack Query) β HTTP Request β Fastify Route β Lucia Auth Middleware β RBAC Role Check β Zod Schema Validation β Controller β Service Layer β Drizzle ORM β PostgreSQL 16 β Response β JSON Serialize β Query Result
Client (Socket.IO) β Fastify WebSocket Server β β Room / Namespace Management Redis Pub/Sub (multi-instance) β β Event Handlers β β Chat / Stream Service β β PostgreSQL β Live State pushed to all connected clients in room
Client β Multipart Upload β Fastify Multipart Plugin β Zod MIME / Size Validation β Sharp (image resize) / FFmpeg (video transcode) β S3 / Cloudinary Upload β CDN distribution β Drizzle ORM β PostgreSQL (media record + metadata)
Login Request β Zod validate β bcrypt verify password β Lucia Auth β create Session β store in PostgreSQL β Session cookie (HttpOnly, Secure) β Client β Subsequent requests β Lucia validateSession() β user context β RBAC middleware β check role β allow / deny
Het primaire schema draait op PostgreSQL 16 via Drizzle ORM (SQL-first, volledig type-safe). AI-configs en chat logs leven in MongoDB. Real-time state en sessies in Redis. Matching- en zoekfeatures gebruiken een Vector DB (Pinecone / Weaviate).
βββββββββββββββββββββββββββββββββββββββββββββββββ β CORE β PostgreSQL 16 β βββββββββββββββββββββββββββββββββββββββββββββββββ€ β β’ users (id, role, email, β¦) β β β’ profiles (bio, avatar, cover, β¦) β β β’ sessions (Lucia Auth sessions) β β β’ consent_records (age verification, ToS) β βββββββββββββββββββββββββββββββββββββββββββββββββ βββββββββββββββββββββββββββββββββββββββββββββββββ β RBAC & ACCESS β βββββββββββββββββββββββββββββββββββββββββββββββββ€ β β’ roles (super_admin β¦ viewer) β β β’ permissions (resource + action) β β β’ user_roles (join table) β βββββββββββββββββββββββββββββββββββββββββββββββββ βββββββββββββββββββββββββββββββββββββββββββββββββ β SOCIAL & CONTENT β βββββββββββββββββββββββββββββββββββββββββββββββββ€ β β’ follows (follower_id, creator_id) β β β’ posts (type, media_url, β¦) β β β’ media (s3_key, cdn_url, mime) β β β’ stories (expires_at, β¦) β β β’ comments / likes β βββββββββββββββββββββββββββββββββββββββββββββββββ βββββββββββββββββββββββββββββββββββββββββββββββββ β STREAMING & LIVE β βββββββββββββββββββββββββββββββββββββββββββββββββ€ β β’ streams (creator_id, status, β¦) β β β’ stream_viewers (join, view_duration) β β β’ stream_events (type, payload, ts) β βββββββββββββββββββββββββββββββββββββββββββββββββ βββββββββββββββββββββββββββββββββββββββββββββββββ β COMMERCE & WALLET β βββββββββββββββββββββββββββββββββββββββββββββββββ€ β β’ wallets (user_id, balance) β β β’ transactions (type, amount, status) β β β’ subscriptions (tier, start, end) β β β’ tips (from, to, token_amount) β β β’ payouts (creator_id, status) β βββββββββββββββββββββββββββββββββββββββββββββββββ βββββββββββββββββββββββββββββββββββββββββββββββββ β CHAT β MongoDB β βββββββββββββββββββββββββββββββββββββββββββββββββ€ β β’ chat_messages (room_id, sender, content) β β β’ ai_configs (persona, model settings) β β β’ chat_logs (session replay, metadata) β βββββββββββββββββββββββββββββββββββββββββββββββββ
Alle gebruikers hebben één of meerdere rollen. Rechten worden afgedwongen via Fastify middleware op elke route.
Volledige systeemtoegang. Platform configuratie, user management, alle data.
Content moderatie, creator goedkeuring, rapportage en analytics.
Chat moderatie, content review, melden afhandelen.
Live streams starten, content uploaden, betaalde abonnementen aanbieden, chattools gebruiken.
Externe dienstverleners die content of services aanbieden via het platform.
Geregistreerde gebruikers met gestaffelde toegang. Elite heeft volledige feature-set.
Anonieme of niet-geauthenticeerde bezoeker. Alleen publiek zichtbare content.
De backend is intern opgedeeld in logische service-domeinen die elk hun eigen verantwoordelijkheid hebben. Ze communiceren via interne function calls binnen services/api en via Redis pub/sub voor async events.
services/api/src/services/ βββ auth/ β Lucia Auth sessions, login, logout, 2FA βββ user/ β Profiles, follows, RBAC role management βββ stream/ β Live stream lifecycle, HLS, viewer state βββ chat/ β Rooms, messages, Socket.IO events βββ token-tip/ β Token economy, tip flows, gamification βββ wallet/ β Balances, transactions, payout requests βββ ai/ β AI persona configs, matching, vector search βββ consent/ β Age verification, ToS acceptance, GDPR βββ media/ β Upload, processing (Sharp/FFmpeg), CDN
turbo run build βββ packages/types β compile TS types (shared) βββ packages/utils β compile utilities βββ packages/ui β build component library βββ packages/api-clientβ generate type-safe client βββ services/api β build Fastify server βββ apps/web β Vite 7 production build β CDN deploy