Skip to content

captainshin90/PodStudio

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

87 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AI Podcast Studio (PodStudio)

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).

Key Features

  • 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.

Screenshots

Home

Podcast

Episodes

Live Demo

https://podstudio.fly.dev/

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.

Technologies Used

  • 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

Prerequisites

Development Setup

  1. Clone the repository:

    git clone https://github.com/captainshin90/PodStudio.git
    cd PodStudio
  2. 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
  3. Install Frontend dependencies: Ensure bun is installed globally.

    npm install -g bun
    bun upgrade
    
    # Install standard dependencies
    bun install
  4. Environment Variables: Create a .env file based on your .env.example.

    cp .env.example .env

    Note: Ensure you configure your Firebase credentials, API keys, and environment-specific settings in the .env file.

  5. Start the development servers:

    # Starts both the Vite frontend and the Flask backend concurrently
    bun dev

    The frontend will be available at http://localhost:5173. The backend API will run on http://127.0.0.1:8080.

Debugging

You can debug the frontend and backend separately:

  • Frontend (Vite):
    • Run bun dev:frontend to start only the Vite server.
    • Launch your browser/debugger against http://localhost:5173/.
  • 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.

Production Build

To build the optimized production frontend:

bun run build

Deployment with Fly.io

The project uses Fly.io for containerized hosting.

  1. 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
  2. Login and Setup:

    fly auth login
    fly launch
  3. Configure Secrets: Configure any necessary secure API tokens and environment .env keys 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
  4. Storage Volume: Provide persistent storage for generated audio and artifacts:

    fly volumes create audio_data --size 1
  5. Deploy Application: Deploy the application. The system will automatically build both the React frontend and bundle it with the Flask backend.

    fly deploy

Project Structure

.
├── 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

License

This project is licensed under the MIT License - see the LICENSE file for details.

Contributing

Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.

Contact

admin@kapshin.com

About

Generate and manage podcasts from URLs, transcripts, or uploaded documents. Multiple AI models.

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors