Skip to content

Shreyas2004wagh/Podster

Repository files navigation

Podster

Riverside-style remote podcast recording MVP with local MediaRecorder capture, chunk persistence via IndexedDB, and resumable uploads. Live comms (WebRTC) stay isolated from recording.

Project layout

  • frontend/ - Next.js 14 (App Router, TS, Tailwind, shadcn-inspired UI), MediaRecorder + IndexedDB + worker upload scaffolding
  • backend/ - Fastify + TS, JWT auth (host + guest), in-memory session/track store, S3-compatible upload stubs
  • shared/ - Types and constants shared across services
  • infra/ - Dockerfiles, docker-compose, env examples

Quickstart

pnpm install
pnpm dev

Frontend: http://localhost:3000 Backend API: http://localhost:4000

Validation

pnpm lint
pnpm typecheck
pnpm build
pnpm --filter @podster/backend test
pnpm --filter frontend exec playwright test

The frontend typecheck command bootstraps placeholder App Router type files before tsc runs so clean checkouts do not depend on an existing .next build artifact.

Environment

Copy infra/env.example to .env files as needed. Key vars:

  • NEXT_PUBLIC_API_URL - backend URL for the frontend
  • HOST_JWT_SECRET, GUEST_JWT_SECRET - JWT signing secrets
  • STORAGE_* - S3/R2-compatible settings for signed URLs

Storage notes

  • Multipart uploads require the bucket CORS policy to expose the ETag response header.
  • Use backend/scripts/configure-cors.ts to apply a matching bucket CORS rule for the configured FRONTEND_ORIGIN.
  • STORAGE_FORCE_PATH_STYLE should usually stay empty unless you are targeting a local S3-compatible endpoint such as MinIO.

Architecture notes

  • Separation of concerns: WebRTC signaling/client kept in its own module; recording pipeline is local-only.
  • Local-first recording: MediaRecorder slices every second, persists to IndexedDB; uploads happen only after stop.
  • Resumable uploads: Worker fans out PUTs to signed URLs; chunk metadata stays locally until completion.
  • Processing hook: Placeholder FFmpeg service ready to be wired to object-storage events.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors