MyOutlet is an audiovisual publishing, streaming and creator platform. Its scope includes creator channels, on-demand and live media, live chat, viewer chat reports, creator timeouts and bans, search, moderation, content ratings, creator tools and audience song requests.
The Wix Velo site source is under src/. The browser extension files at the repository root are a separate legacy companion and are not the streaming service. The upstream/ paths are pinned Git submodule entries; they are not imported application source.
The backend service layer includes src/backend/catalog.jsw for creator discovery, published catalogue browsing and search with category, tag, rating, type and language filters, creator profiles with avatars, banners and social links, channel management, submissions, moderation and channel-scoped single or ordered multi-song requests. src/backend/viewer.jsw handles watchlists, playback progress, creator follows, followed-creator feeds, member-selected content-rating preferences and creator playback analytics. src/backend/media.jsw handles private MP4 uploads and published-video playback URLs. src/backend/reports.jsw handles member reports and owner-only moderation. src/backend/engagement.jsw handles media likes, comments, site-owner moderation and creator-channel comment moderation. src/backend/playlists.jsw handles creator-owned playlists and ordered media items. src/backend/notifications.jsw provides private notification inboxes for new follows, comments, song requests and followed creators starting live streams. src/backend/rights.jsw manages creator rights declarations, owner review, expiry checks and publication/playback gating. src/backend/liveStreams.jsw manages creator-owned RTMPS sessions and public live-stream discovery and playback lookup. src/backend/liveChat.jsw provides live-session chat reads, authenticated posting, rate limiting, creator/site-owner moderation, viewer reports and creator-channel bans and timeouts. src/backend/http-functions.js authorizes MediaMTX publishing and HLS reads. src/backend/ratingPreferences.js applies member-selected rating filters. src/backend/events.js records upload completion and video-transcoding readiness. The reusable front-end uploader in src/public/mediaUpload.js sends MP4 files to the signed upload URL and reports byte-level progress; the returned upload-session ID can then be passed to submitContent after the session reaches ready. See CMS_COLLECTIONS.md for the required Wix CMS collection fields and access controls.
Current MyOutlet site state:
- The 20 custom CMS collections documented in
CMS_COLLECTIONS.mdhave been created on the MyOutlet site. - Their direct collection permissions are set to
ADMIN; application-level public, member and site-owner access is controlled bysrc/backend/permissions.json. - The repository's Wix site binding now targets MyOutlet.
- The automated source-contract check is available as
npm test; live Velo runtime behavior still requires execution against the site; the live-chat, live-chat-report and live-chat-ban collections have been created on the MyOutlet site; all chat-report and chat-ban query indexes are active.
The current media workflow accepts private MP4 uploads into the Wix Media Manager, waits for Wix's video-transcoding event, and returns HLS or DASH playback URLs for published uploaded videos. Creator live sessions use RTMPS ingest through MediaMTX and authenticated HLS playback, with rights review and content moderation gating. Live chat is tied to an active, rights-cleared stream, is rate-limited to five messages per member per ten seconds, and supports creator-channel and site-owner moderation. Members can report chat messages; reports are private to the reporter and site owners, rate-limited, and reviewable through the owner-only moderation methods. Channel owners can also issue temporary timeouts or permanent chat bans and lift them. Because geographic access controls are not implemented, rights verification currently accepts worldwide distribution declarations only. The live service does not yet provide public VOD import/playback, off-site archival, adaptive-bitrate transcoding, a custom CDN, verified age checks, payment processing or operational monitoring. Content-rating preferences are viewer-selected filters, not age verification. Creator analytics report playback starts, bounded client-reported watch time and completions; they are not audited audience measurements. The chat-report workflow and creator ban/timeout methods are committed in the repository.
No payment is collected by the current backend. Song requests are queued as metadata only, scoped to one active live session, limited to 50 pending requests per stream and five per viewer; ending the stream cancels its remaining queue. They do not charge viewers and are not yet connected to NoiseGround song search or paid request checkout. No third-party media is licensed by the presence of a URL or catalogue record.
See LIVE_STREAMING.md for the MediaMTX ingest/playback service and its Wix secrets.
See UPSTREAM_COMPONENTS.md for the upstream repository inventory and license notes. A Git submodule entry records a pinned commit; it does not copy source files into the MyOutlet application.
Run node scripts/validate-backend.js (or npm test) to check that all exported backend web methods have explicit permissions, private collections are documented, and the MyOutlet site binding, media event/uploader wiring and feature modules remain consistent. GitHub Actions syntax-checks every Velo JavaScript source file and validates every exported web method against the documented collections on relevant pushes and pull requests.