This application allows users to upload podcast audio files, analyze speaker WPM, and adjust speech speed per speaker.
I made this because listening to a podcast at 2x speed with Larry Summers was unbearable, he was so slow and going higher made other people too hard to understand
I also used this as an oppourtunity to try ourt a bunch of coding models/agents, with very limited oversight, i guided some decisons but gave agents lots of freedom to write bad code
Before running the application, ensure you have the following installed and configured:
- Bun: https://bun.sh/docs/installation
- ffmpeg: Required for audio file manipulation. (
sudo apt install ffmpeg/brew install ffmpeg) - rubberband-cli: Required for high-quality time-stretching. (
sudo apt install rubberband-cli/brew install rubberband) - Redis: Required for task queue & job state. Ensure a server is running (e.g.,
docker run -d -p 6379:6379 redis:latest). - Supabase Project:
- Create a project at supabase.com.
- Enable Authentication Providers: Go to Authentication -> Providers and enable Email (with Magic Link), Google, and Twitter (X). Follow the instructions to add the required Client IDs/Secrets from Google Cloud Console / X Developer Portal. Ensure the Supabase Redirect URI is added to your Google/X app configurations.
- Note your Supabase Project URL and anon key (from Project Settings -> API).
- AssemblyAI API Key: Sign up and get an API key for transcription/diarization.
- Podcast Index API Key & Secret: Sign up at podcastindex.org and get an API Key and Secret for podcast searching.
-
Navigate to Project Directory:
cd /path/to/PodPace -
Install Dependencies:
# Backend cd backend bun install cd .. # Frontend cd frontend bun install cd ..
-
Configure Frontend Environment (
frontend/.env): Create a file named.envinside thefrontenddirectory and add your Supabase credentials (prefixed withVITE_):VITE_SUPABASE_URL=YOUR_SUPABASE_PROJECT_URL VITE_SUPABASE_ANON_KEY=YOUR_SUPABASE_ANON_KEY
Replace the placeholders with your actual Supabase Project URL and anon key.
-
Configure Backend Environment (
backend/set_env.sh):- A script
backend/set_env.shis provided to handle environment variables, especially those with special characters. - Edit
backend/set_env.sh: Open this file and replace the placeholder values forPODCAST_INDEX_API_KEY,PODCAST_INDEX_API_SECRET,ASSEMBLYAI_API_KEY,SUPABASE_URL, andSUPABASE_ANON_KEYwith your actual credentials. Ensure thePODCAST_INDEX_API_SECRETvalue is enclosed in single quotes. - Optionally, uncomment and set
REDIS_HOST,REDIS_PORT,REDIS_PASSWORDif they differ from the defaults (127.0.0.1:6379, no password).
- A script
- Start Redis: Ensure your Redis server is running.
- Set Backend Environment Variables: Open a terminal in the
backenddirectory and run:(Note: You must run thissource set_env.shsourcecommand in the same terminal session where you will start the backend in the next step.) - Start All Services:
From the root
PodPace/directory, run:bun run dev
- This uses
concurrentlyto start the backend API, workers, and frontend dev server. - The frontend typically runs on
http://localhost:5173. - Open this URL in your browser. You will be prompted to log in.
- This uses
The application now uses Supabase for authentication. Users can sign up or log in using:
- Email Magic Link: Enter email, click link in email.
- Google Login: Click button, authenticate with Google.
- X (Twitter) Login: Click button, authenticate with X.
Protected backend API routes now require a valid authentication token obtained after login.