├── index.ts ├── frontend ├── src │ ├── vite-env.d.ts │ ├── main.tsx │ ├── components │ │ ├── AudioPlayer.tsx │ │ ├── ErrorMessage.tsx │ │ ├── DownloadArea.tsx │ │ ├── SearchBar.tsx │ │ ├── FeedList.tsx │ │ ├── JobProgress.tsx │ │ ├── FileUpload.tsx │ │ ├── SpeakerAdjuster.tsx │ │ └── EpisodeList.tsx │ ├── supabaseClient.ts │ ├── interfaces.ts │ ├── App.css │ ├── index.css │ ├── assets │ │ └── react.svg │ ├── pages │ │ └── LoginPage.tsx │ ├── context │ │ └── AuthContext.tsx │ └── App.tsx ├── tsconfig.json ├── .gitignore ├── index.html ├── tsconfig.node.json ├── vite.config.ts ├── tsconfig.app.json ├── package.json ├── eslint.config.js ├── public │ └── vite.svg └── README.md ├── backend ├── package.json ├── .gitignore ├── tsconfig.json ├── middleware │ ├── role.ts │ └── auth.ts ├── interfaces.ts ├── routes │ ├── webhooks.ts │ └── podcasts.ts ├── worker-adjust.ts ├── bun.lock ├── worker-analyze.ts └── index.ts ├── package.json ├── .env.template ├── .gitignore ├── tsconfig.json ├── set_env.sh ├── media-player-plan.md ├── README.md ├── bun.lock ├── plan.md └── LICENSE /index.ts: -------------------------------------------------------------------------------- 1 | console.log("Hello via Bun!"); -------------------------------------------------------------------------------- /frontend/src/vite-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | -------------------------------------------------------------------------------- /frontend/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "files": [], 3 | "references": [ 4 | { "path": "./tsconfig.app.json" }, 5 | { "path": "./tsconfig.node.json" } 6 | ] 7 | } 8 | -------------------------------------------------------------------------------- /frontend/.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | pnpm-debug.log* 8 | lerna-debug.log* 9 | 10 | node_modules 11 | dist 12 | dist-ssr 13 | *.local 14 | 15 | # Editor directories and files 16 | .vscode/* 17 | !.vscode/extensions.json 18 | .idea 19 | .DS_Store 20 | *.suo 21 | *.ntvs* 22 | *.njsproj 23 | *.sln 24 | *.sw? 25 | -------------------------------------------------------------------------------- /frontend/src/main.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import ReactDOM from 'react-dom/client' 3 | import './index.css' 4 | import App from './App.tsx' 5 | import { AuthProvider } from './context/AuthContext.tsx' 6 | 7 | ReactDOM.createRoot(document.getElementById('root')!).render( 8 | 9 | 10 | 11 | 12 | , 13 | ) 14 | -------------------------------------------------------------------------------- /frontend/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Vite + React + TS 8 | 9 | 10 |
11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /backend/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "@supabase/supabase-js": "^2.49.4", 4 | "@types/uuid": "^10.0.0", 5 | "bullmq": "^5.48.1", 6 | "ioredis": "^5.6.1", 7 | "uuid": "^11.1.0" 8 | }, 9 | "devDependencies": { 10 | "@types/bun": "^1.2.9", 11 | "@types/node": "^22.14.1", 12 | "@types/stripe": "^8.0.417" 13 | }, 14 | "name": "podpace", 15 | "module": "index.ts", 16 | "type": "module", 17 | "private": true, 18 | "peerDependencies": { 19 | "typescript": "^5" 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /backend/.gitignore: -------------------------------------------------------------------------------- 1 | # dependencies (bun install) 2 | node_modules 3 | 4 | # output 5 | out 6 | dist 7 | *.tgz 8 | 9 | # code coverage 10 | coverage 11 | *.lcov 12 | 13 | # logs 14 | logs 15 | _.log 16 | report.[0-9]_.[0-9]_.[0-9]_.[0-9]_.json 17 | 18 | # dotenv environment variable files 19 | .env 20 | .env.development.local 21 | .env.test.local 22 | .env.production.local 23 | .env.local 24 | 25 | # caches 26 | .eslintcache 27 | .cache 28 | *.tsbuildinfo 29 | 30 | # IntelliJ based IDEs 31 | .idea 32 | 33 | # Finder (MacOS) folder config 34 | .DS_Store 35 | -------------------------------------------------------------------------------- /frontend/src/components/AudioPlayer.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | 3 | interface AudioPlayerProps { 4 | /** URL to stream the processed MP3 */ 5 | src: string; 6 | /** Optional CSS class name */ 7 | className?: string; 8 | } 9 | 10 | /** 11 | * Simple HTML5 audio player for in-app streaming. 12 | * Shows native controls and fills its container’s width. 13 | */ 14 | export default function AudioPlayer({ 15 | src, 16 | className 17 | }: AudioPlayerProps) { 18 | return ( 19 |