StreamPunk

Implementation plan for a mobile-first companion app that helps people find, organize, rate, discuss, and schedule TV shows, movies, podcasts, and other streaming or broadcast media.

Domain: streampunk.app Target: iOS, Android, macOS, Windows Backend preference: Cloudflare Draft date: June 2026

Executive Recommendation

Build StreamPunk as a Flutter app with a Cloudflare-first backend. Flutter is the best starting point because it supports iOS, Android, macOS, and Windows from one codebase, while still allowing native integrations for biometrics, push notifications, secure storage, subscriptions, and desktop packaging.

The first release should focus on discovery, favorites, ratings, personal watch/listen planning, a lightweight watch-party feature, and strong moderation controls. Keep the social layer intentionally small in version 1.0.0 because user-generated content is the part most likely to create app review, safety, moderation, and operational risk.

Recommended v1 stack: Flutter + Dart, Riverpod or Bloc for state management, Cloudflare Workers API, D1 for relational app data, R2 for media attachments and exports, Durable Objects for live watch-party rooms, Queues for moderation jobs, Turnstile for bot friction on web flows, OpenAI Moderation API or a comparable moderation provider, and RevenueCat for cross-store subscription entitlement management.

Product Purpose

StreamPunk helps people answer three everyday questions:

  1. What should I watch or listen to next, and where is it playing? Search, browse, provider availability, favorites, ratings, recommendations, and random shuffle.
  2. Where did I leave off and what is planned? Personal watchlist/listenlist, calendar-style scheduling, reminders, and history.
  3. Who am I enjoying this with? Small watch parties with invitations, organizer controls, simple reactions, discussion boards, and moderated comments.

The target user includes people who struggle with modern technology, so the product should avoid clutter, jargon, hidden gestures, and dense settings. The app should feel like a friendly organizer, not another social network asking for constant attention.

Version 1.0 Scope

Include in 1.0.0 Defer Until Later
Single-account user model, account creation, login, MFA, biometric unlock, profile basics, privacy settings. Household/family profiles, public creator profiles, follower feeds, algorithmic social timelines.
Search and discovery for movies, TV, podcasts, genres, providers, and basic availability. Deep streaming-platform integrations that require complex licensing or provider partnerships.
Favorites, watchlist/listenlist, completed history, authenticated-user star ratings, comments, and feedback. Full recommendation engine training pipeline. Start with rules plus provider metadata.
Random shuffle based on favorites, prior ratings, availability, and blocked genres. Complex AI personality matching or opaque ranking that is hard to explain to users.
Small general-topic watch parties such as “Rom-Com Lovers” or “Sci-Fi Club,” with invite/request access, organizer approval, post board, reactions, reporting, blocking, and moderation queue. Open-ended anonymous chat, live video, livestreaming, DMs, ephemeral stories, or TikTok-style feeds.
Subscription purchases through App Store and Google Play, plus desktop and public web app entitlement support. Alternative mobile payment flows that could trigger app store rejection.
App review note: Apple and Google both scrutinize subscriptions and UGC. StreamPunk should ship with user reporting, blocking, moderation, published contact info, clear terms, clear subscription pricing, a reviewer demo account, and no placeholder screens.

User Experience Principles

Mobile First

Design the phone flow first, then adapt to tablet and desktop. Use large touch targets, readable type, bottom navigation, and predictable screen transitions.

Plain Language

Use labels like “Watch Later,” “Listening List,” “Party Board,” and “Pick for Me.” Avoid technical words like algorithm, metadata, ingestion, or provider unless inside admin tools.

Low Friction

Let users browse before subscribing where possible. Make account setup short. Ask for permissions only when needed and explain the benefit in one sentence.

Confidence

Every destructive action should have undo or confirmation. Moderated comments should explain status gently: “Only visible to you while it is being reviewed.”

Suggested Main Navigation

Technology Stack

Layer Recommendation Why
Client app Flutter + Dart Single codebase for iOS, Android, macOS, Windows, and a functional web app; strong package ecosystem; good fit for Cursor development; easier to maintain than separate native clients.
Public web app Flutter Web hosted on Cloudflare Pages, using the same backend APIs Provides full StreamPunk functionality in a browser while reusing app code and API contracts. A separate marketing site can live beside it at streampunk.app.
State management Riverpod, or Bloc if you prefer stricter event/state patterns Riverpod is pragmatic and testable. Bloc is more formal. For a solo founder, Riverpod is probably friendlier.
Local storage Drift/SQLite plus encrypted secure storage for secrets SQLite handles offline lists and cached catalog data. Device keychains handle tokens and encryption keys.
Backend API Cloudflare Workers with TypeScript Excellent fit for API routes, low operational overhead, easy domain integration through Cloudflare, and scales from small usage without managing servers.
Primary database Cloudflare D1 Relational SQLite-style data is a natural fit for users, favorites, parties, ratings, moderation queues, and subscriptions.
Realtime rooms Cloudflare Durable Objects Watch-party rooms need ordered membership and message state. Durable Objects are well suited to per-room coordination.
Background work Cloudflare Queues + Cron Triggers Use for moderation jobs, catalog refreshes, recommendation refreshes, email/push scheduling, and export jobs.
Object storage Cloudflare R2 Store generated exports, moderation evidence snapshots, and future image attachments without egress-heavy storage costs.
Authentication Auth0, Clerk, Stytch, Supabase Auth, or custom OIDC-compatible auth Do not hand-roll authentication at first. Choose a vendor with MFA, passkeys, OAuth, account recovery, audit logs, and mobile SDK support.
Subscriptions RevenueCat Simplifies App Store, Google Play, and future desktop/web entitlements. Reduces receipt-validation complexity.
AI moderation OpenAI Moderation API, Cloudflare Workers AI classification, or a specialist moderation provider AI should triage and hold questionable content, but humans need final review tools and audit trails.
Moderator alerts Email first, then Slack and SMS/MMS through provider integrations Human admins should be alerted when AI moderation needs help. Start with email because it is simple and auditable; add Slack and SMS/MMS for urgency.
Analytics PostHog Cloud or privacy-conscious event analytics Track product usage without collecting unnecessary personal data. Use minimal event payloads.

Media Data APIs

No single public API perfectly covers movies, TV, network schedules, streaming availability, and podcasts with commercial-friendly terms. Start with a layered approach and design a provider abstraction so services can change later. Version 1 should focus on the United States, Canada, and the United Kingdom while storing locale, country, language, provider-region, and translated-display fields so the product can expand into additional languages later.

Need Recommended Source Notes
Movie and TV metadata TMDB, IMDb API, OMDb as fallback TMDB is popular and accessible, but confirm attribution and commercial terms before launch. IMDb has an official commercial API through AWS Data Exchange. OMDb can be useful but should not be the only source for a paid app.
Streaming availability Watchmode or JustWatch partner API Availability data is commercially valuable and often paid. Watchmode has explicit commercial tiers. JustWatch requires partner integration and attribution rules.
Podcasts Podcast Index API Good starting point for podcast search and episode metadata. Review terms before commercial use.
Network TV schedules TVMaze, Gracenote, or paid broadcast data providers Network schedules are licensing-sensitive. Use a modest v1 goal: episode dates and show metadata before full channel-grid scheduling.
Implementation pattern: Create a backend service named catalog-provider with provider adapters. The Flutter app should never call external media APIs directly. This protects API keys, normalizes data, caches responses, and makes provider changes less painful.

Backend Architecture

The backend should be modular even if it begins as one Cloudflare Workers project. Use clear route groups and shared service modules.

API Gateway

Cloudflare Worker handling auth verification, request validation, rate limiting, and routing.

Catalog Service

Searches providers, normalizes movie/TV/podcast records, stores cached catalog records, and tracks provider attribution.

User Library Service

Favorites, lists, history, ratings, comments, hidden items, “not interested,” and shuffle preferences.

Watch Party Service

General topic group creation, invitations, membership, organizer roles, party board posts, reactions, reports, and approvals.

Moderation Service

AI triage, human review queue, auto-approve thresholds, audit logs, appeals, and policy rules.

Subscription Service

RevenueCat webhooks, entitlement state, trial status, app-review demo users, and subscription-gated features.

Suggested API Route Groups

Ecosystem And Feature Flows

These diagrams are intentionally high-level. They show how the StreamPunk ecosystem is organized and how the most important features move data through the client, backend, providers, moderation, and storage layers.

Ecosystem Overview
Native Apps iOS, Android, macOS, Windows built with Flutter.
Web App Full browser app hosted on Cloudflare Pages.
Cloudflare Edge DNS, TLS, WAF, rate limiting, Pages, Workers API.
Auth & Subscriptions MFA/passkeys/biometrics, RevenueCat entitlements.
StreamPunk API Catalog, library, ratings, parties, scheduling, moderation.
Background Work Queues, cron jobs, alerts, catalog refreshes.
Data Stores D1 relational data, R2 objects, Durable Objects rooms.
External Providers TMDB/IMDb, Watchmode/JustWatch, Podcast Index, AI moderation.
Feature Organization Map

Discover

  • Search media
  • Browse genres
  • Check where it is playing
  • Filter by services and region

Plan

  • Favorites
  • Watch/listen list
  • History
  • Schedule and reminders

Choose

  • Pick for Me
  • Explain recommendation
  • Respect dislikes and blocked genres
  • Prioritize available titles

Discuss

  • Ratings
  • Comments
  • Feedback
  • AI and human moderation

Gather

  • General themed parties
  • Invites and join requests
  • Organizer controls
  • Party board and reactions

Protect

  • Authenticated posting
  • MFA and biometric unlock
  • Reports and blocks
  • Admin alerts and audit logs
Discovery And Availability Data Flow
User
SearchesMovie, show, podcast, genre, mood, or provider.
Reviews ResultsSees title, type, rating summary, and where it is playing.
Takes ActionAdds to list, favorites, schedules, rates, or opens provider.
StreamPunk
Normalize QueryApply region, language, provider filters, and safe defaults.
Fetch Or CacheUse D1 cache first, then catalog provider adapters.
Return Unified ItemMerge metadata, availability, attribution, and user library state.
Providers
Metadata APIsTMDB, IMDb, OMDb, TV schedule sources.
Availability APIsWatchmode, JustWatch, provider-specific links.
Podcast APIsPodcast Index and episode feeds.
Pick For Me Shuffle Flow
User Taps Pick For Me Optionally chooses media type, time available, mood, or service.
Preference Filter Favorite genres, favorite titles, disliked items, blocked genres.
Availability Filter US/Canada/UK region and services the user can access.
Rank And Randomize Blend good matches with novelty so it feels fresh.
Result With Reason “Picked because you like sci-fi and it is on a service you have.”
Comment, Rating, And Moderation Flow
Logged-In User Creates rating, comment, reaction, or feedback.
API Validates Checks auth, entitlement, rate limits, and content rules.
AI Moderation Approve, reject, or escalate based on policy thresholds.
Human Review Admins receive alerts for cases that need help.
Publish Or Hold Approved content becomes visible; questionable content stays private.
Watch Party Flow
Create Theme Organizer starts a group such as “Rom-Com Lovers.”
Invite Or Discover Users receive invites or request access to discoverable parties.
Organizer Approves Organizer manages membership, roles, mutes, and removals.
Party Board Members post, react, suggest media, and plan watch/listen time.
Moderation Layer AI flags sensitive content; reports and admins handle edge cases.

Data Model

Start relational. Add search indexes, vector embeddings, or external search later only when the catalog grows large enough to justify it.

Table Purpose
usersStable user account record, display name, locale, account status, created date.
user_security_settingsMFA state, passkey metadata, biometric preference flag, recovery state. Do not store biometric data.
media_itemsNormalized movies, shows, podcast series, podcast episodes, and future media types.
media_provider_refsProvider-specific IDs for TMDB, IMDb, Watchmode, Podcast Index, etc.
genres, media_genresGenre taxonomy and relationships.
user_favorite_genres, user_favorite_mediaPersonal preference signal for recommendations and shuffle.
library_itemsWatch/listen state: planned, in progress, completed, paused, abandoned, hidden.
schedule_entriesUser plans and reminders for media consumption.
ratingsUser star ratings; enforce one rating per user per media item.
commentsPublic item comments with moderation state.
watch_partiesParty name, description, visibility, organizer settings, related media item.
party_membersMembership, organizer role, invite/request status, mute/ban state.
party_posts, party_reactionsDiscussion board content and reaction records.
moderation_casesAI result, review state, reviewer action, policy reason, audit timestamps.
reportsUser-submitted reports for comments, posts, parties, or users.
subscription_entitlementsCurrent plan, source store, renewal state, RevenueCat customer ID.
audit_logsSecurity-sensitive and moderation-sensitive actions.

Security And Privacy

StreamPunk should collect the smallest amount of personal data needed to provide the service. Treat trust as a product feature.

Security Requirements

Important wording: The correct term is usually PII, personally identifiable information, rather than PPI. The plan should treat names, email addresses, account identifiers, IP-derived location, subscription state, moderation history, and social graph data as sensitive.

Moderation Plan

AI moderation should protect users and reduce workload, but it should not be presented as final authority. Use a state machine so every public comment and party post has a clear path.

State User Experience Backend Behavior
pending_ai “Only visible to you while it is being reviewed.” Content is queued for AI moderation.
approved Visible to intended audience. AI confidence is safe or human approved it.
needs_human_review Still visible only to author and moderators. Moderator reviews policy category, context, and user history.
rejected Author sees a clear reason and optional appeal flow. Content remains stored for audit window, then deleted/anonymized according to policy.
removed_after_report Public content disappears; reporter receives acknowledgement. Moderator or automated rule acted after a report.

Required UGC Controls

Recommendation And Shuffle

Start explainable. Users who struggle with technology should understand why StreamPunk picked something.

Version 1 Rules

Later AI Enhancements

Monetization

Because the app will sell subscriptions through app stores, keep mobile purchases inside Apple and Google billing systems. Use RevenueCat or a similar service to unify entitlements.

Tier Possible Features
Free Search, limited favorites, limited lists, basic ratings, one or two parties, basic shuffle.
Plus Unlimited favorites/lists, reminders, advanced filters, richer shuffle, more parties, party recommendation matching.
Family/Household Multiple profiles, shared watch planning, family-safe controls, household recommendations.

Subscription copy must be very clear: price, renewal period, trial conversion, cancellation path, and what features remain available without paying.

App Store Readiness

Implementation Roadmap

Phase 0: Foundation And Decisions

Phase 1: App Skeleton

Phase 2: Backend MVP

Phase 3: Discovery And Lists

Phase 4: Scheduling And Shuffle

Phase 5: Watch Parties

Phase 6: Moderation And Admin

Phase 7: Subscriptions And Launch

Development Setup

Cursor is a good fit for this project because it gives you AI-assisted editing while still working like a normal code editor. Xcode will still be required for iOS signing, simulators, and App Store submission.

Local Tools

Suggested Repo Structure

Settled Product Decisions

Source Notes

These are useful reference links for the first technical decisions. Re-check terms and policies before launch because they change.