ImpactStream is a multi-platform streaming project organized as a pnpm monorepo.
apps/web— Next.js web app and API routes.apps/mobile— Expo / React Native app for iOS and Android.apps/roku— Roku SceneGraph / BrightScript app.
packages/shared— platform-neutral code that is genuinely reused by more than one app.
Keep UI, navigation, playback integrations, and device-specific behavior inside each app. Move code into packages/shared only when multiple apps actually consume it.
- Node.js 22.13 or newer.
- pnpm 12.
- A TMDB API key.
git clone https://github.com/LaganYT/ImpactStream.git
cd ImpactStream
pnpm installCreate apps/web/.env.local:
TMDB_API_KEY=your_tmdb_api_keyThe TMDB key is only read on the server. The browser reaches TMDB through /api/tmdb/*, which forwards an allowlisted set of endpoints.
Optional web configuration:
NEXT_PUBLIC_DOWNLOAD_API_URL=https://hahaevilcraft.site/download-api/scrape/sourceRun commands from the repository root:
pnpm dev:web
pnpm dev:mobile
pnpm build
pnpm typecheckThe Roku app uses Roku's native development and sideloading workflow rather than the JavaScript workspace runtime.
ImpactStream/
├── apps/
│ ├── mobile/
│ ├── roku/
│ └── web/
├── packages/
│ └── shared/
├── package.json
├── pnpm-workspace.yaml
└── turbo.json
The web app provides movie, TV, anime, and live-TV browsing, TMDB metadata, embedded playback, continue-watching state, program-guide data, and direct download options where available.
Add JavaScript or TypeScript clients under apps/<platform> and use workspace packages with workspace:*. Platforms that cannot consume TypeScript directly should share API contracts while keeping their native UI and playback code platform-specific.