An AI-powered podcast creation platform that generates episodes with AI-written scripts, AI-generated cover art, and Ukrainian text-to-speech — all from a simple text prompt.
👥 Team Project
Backend & AI Services (My Role): Kotlin Ktor REST API, Python AI microservice (GPT-4o, Stable Diffusion 1.5, Coqui TTS), MySQL database integration, and JWT Authentication.
Frontend: Developed by teammate — React + Vite SPA.
- 🤖 AI Episode Generation — write a prompt, get a full podcast episode with audio
- 🎨 AI Cover Art — Stable Diffusion generates unique podcast artwork
- 🔊 Ukrainian TTS — natural speech synthesis via Coqui VITS model
- 📝 Auto-Summarization — GPT-4o-mini creates episode summaries
- 🔐 JWT Authentication — secure user accounts with role-based access
- 🛡️ Moderation System — moderators can manage users and content
- 🔍 Search & Discovery — browse and search public podcasts
- 📱 Responsive UI — works on desktop and mobile
- 🌙 Dark/Light Theme — toggleable color scheme
Podcast page with AI-generated cover, episode summaries, and audio player
Responsive mobile layout
┌──────────────┐ ┌───────────────────┐ ┌──────────────────┐
│ Frontend │────▶│ ktorBackend │────▶│ MySQL DB │
│ React+Vite │ │ Ktor :8080 │ │ │
│ :5173 │◀────│ │◀────│ Users, Podcasts │
└──────────────┘ │ PythonAiService │ │ Episodes │
└────────┬──────────┘ └──────────────────┘
│
▼
┌───────────────────┐ ┌──────────────────┐
│ pythonAI │────▶│ media/ │
│ Flask :5000 │ │ ├── audio/*.wav │
│ │ │ └── image/*.png │
│ GPT-4o • SD 1.5 │ └──────────────────┘
│ Coqui TTS │
└───────────────────┘
| Layer | Technologies |
|---|---|
| Frontend | React, Vite, JavaScript |
| Backend API | Kotlin 2.1, Ktor 3.1, Netty |
| AI Service | Python, Flask, PyTorch |
| Database | MySQL 8 + JetBrains Exposed ORM |
| AI Models | GPT-4o-mini, Stable Diffusion v1.5, Coqui TTS (uk/mai/vits) |
| Auth | JWT + BCrypt |
master-podcaster/
├── frontend/ # React + Vite SPA
├── backend/
│ ├── ktorBackend/ # Kotlin Ktor REST API
│ ├── pythonAI/ # Python AI microservice
│ └── media/ # Generated audio & images
├── doc/
│ ├── diagrams/ # PlantUML source files
│ └── images/ # Rendered diagrams & screenshots
└── LICENSE
Start MySQL and create a database. Configure credentials in backend/ktorBackend/src/main/kotlin/config/config.kt.
cd backend/pythonAI
echo "GITHUB_TOKEN=your_token" > .env
pip install flask openai python-dotenv torch diffusers transformers accelerate TTS
python main.py # http://localhost:5000cd backend/ktorBackend
./gradlew run # http://localhost:8080cd frontend
npm install
npm run dev # http://localhost:5173The Unlicense — public domain.



