A content management system that generates and manages podcasts from documents, URLs, and transcripts using multiple AI transcription and voice generation models. It allows creation of podcast channels and episodes.
Based on OpenPod (https://github.com/giulioco/openpod) and Podcastfy (https://github.com/souzatharsis/podcastfy).
- Custom Podcast Generation: Generate podcasts from multiple URLs, transcripts, or uploaded documents.
- Content Management: Built-in management for podcasts, transcripts, AI prompts, and documents.
- Real-time Updates: Real-time progress tracking using WebSocket integration.
- Modern UI/UX: User interface built with React, Vite, Tailwind CSS, and standard shadcn/ui components.
- Provider & Model Management: GUI to manage API keys and various Generative AI models.
- Text-to-Speech: Support for multiple TTS providers and customizable voices/styles.
- Firebase Integration: Authentication, Firestore database, and Cloud Storage for artifacts.
There's no user authentication, but it asks for an access code. Please post an issue with your email address and I'll send you the code. This is so that I can control my hosting cost.
Podcast Player: Try with our Four Freedoms Podcast webapp: https://github.com/captainshin90/Four-Freedoms to listen to the podcasts generated in PodStudio.
- Frontend: React 18, Vite, Tailwind CSS, shadcn/ui, React Router, Firebase Web SDK
- Backend: Python 3.11+, Flask, Socket.IO, podcastfy
- Package Managers: Bun (Frontend), Pip (Backend)
- Deployment: Fly.io
- Node.js 18+
- Python 3.11+
- Bun
- Fly.io CLI (for deployment)
-
Clone the repository:
git clone https://github.com/captainshin90/PodStudio.git cd PodStudio -
Set up Python environment:
# Create and activate virtual environment python -m venv .venv # Activate on Windows: .\.venv\Scripts\activate # Or on Unix/MacOS: source .venv/bin/activate # Upgrade pip and install backend dependencies python -m pip install --upgrade pip pip install -r requirements.txt
-
Install Frontend dependencies: Ensure
bunis installed globally.npm install -g bun bun upgrade # Install standard dependencies bun install -
Environment Variables: Create a
.envfile based on your.env.example.cp .env.example .env
Note: Ensure you configure your Firebase credentials, API keys, and environment-specific settings in the
.envfile. -
Start the development servers:
# Starts both the Vite frontend and the Flask backend concurrently bun devThe frontend will be available at
http://localhost:5173. The backend API will run onhttp://127.0.0.1:8080.
You can debug the frontend and backend separately:
- Frontend (Vite):
- Run
bun dev:frontendto start only the Vite server. - Launch your browser/debugger against
http://localhost:5173/.
- Run
- Backend (Flask):
- Run the backend manually via your IDE or run
python app.py(runs on port 8080). - Test the environment health endpoint locally via
http://localhost:8080/api/test-env.
- Run the backend manually via your IDE or run
To build the optimized production frontend:
bun run buildThe project uses Fly.io for containerized hosting.
-
Install Fly CLI:
- Windows (PowerShell):
pwsh -Command "iwr https://fly.io/install.ps1 -useb | iex"
- macOS / Linux:
curl -L https://fly.io/install.sh | sh
- Windows (PowerShell):
-
Login and Setup:
fly auth login fly launch
-
Configure Secrets: Configure any necessary secure API tokens and environment
.envkeys for your production environment.# Example: Setting a secret fly secrets set API_TOKEN=your_generated_token # Add your Firebase context and other ENV keys correspondingly
-
Storage Volume: Provide persistent storage for generated audio and artifacts:
fly volumes create audio_data --size 1
-
Deploy Application: Deploy the application. The system will automatically build both the React frontend and bundle it with the Flask backend.
fly deploy
.
├── src/ # Frontend React source code
│ ├── components/ # shadcn/ui and custom components
│ ├── pages/ # Application routes
│ └── lib/ # Utility functions and Firebase config
├── app.py # Main Flask backend application core
├── requirements.txt # Python backend dependencies
├── package.json # Node/Bun dependencies & standard scripts
├── vite.config.ts # Vite local development configuration
├── tailwind.config.js # Styling framework configuration
├── Dockerfile # Container deployment instructions
└── fly.toml # Fly.io deployment configuration
This project is licensed under the MIT License - see the LICENSE file for details.
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.


