Skip to content

MD-MOUAD/podcasty

Repository files navigation

Podcasty - Podcast Streaming Application

Podcasty Banner

Podcasty is a modern podcast streaming platform that allows users to discover, listen to, and share their favorite podcasts. The app includes a powerful text-to-speech functionality, allowing users to convert written text into fully playable podcast episodes. Built with cutting-edge technologies like Next.js, MongoDB, and Cloudinary, Podcasty offers a seamless and engaging listening experience with robust features like audio playback, podcast management, text-to-speech conversion, and user profiles.


πŸš€ Features

πŸŽ™οΈ Core Features

  • User authentication with Clerk
  • Text-to-speech conversion for generating podcasts from text
  • Podcast streaming with a custom audio player
  • Podcast creation, editing, and deletion
  • User profiles with listening history
  • Fully responsive design

🎧 Audio Features

  • Custom audio player controls
  • Background audio persistence

πŸ“± Content Management

  • Upload podcasts with images and audio
  • Edit podcast details and metadata
  • Delete podcasts (with Cloudinary media cleanup)
  • View podcast analytics (plays, duration)

πŸ›  Technologies Used

Frontend

Backend

  • Next.js API Routes with server actions
  • Mongoose (MongoDB ODM)
  • Cloudinary (media storage)
  • Clerk (authentication)

Database

  • MongoDB (via MongoDB Atlas)

βš™οΈ Getting Started

Prerequisites

  • Node.js 18+
  • MongoDB Atlas account
  • Cloudinary account
  • Clerk account

Installation

  1. Clone the repository:
git clone https://github.com/MD-MOUAD/podcasty.git
cd podcasty
  1. Install dependencies:
npm install
  1. Set up environment variables: Create a .env.local file in the root directory with the following:
MONGODB_URI=your_mongodb_connection_string
CLOUDINARY_CLOUD_NAME=your_cloudinary_cloud_name
CLOUDINARY_API_KEY=your_cloudinary_api_key
CLOUDINARY_API_SECRET=your_cloudinary_api_secret
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=your_clerk_publishable_key
CLERK_SECRET_KEY=your_clerk_secret_key
CLERK_WEBHOOK_SIGNING_SECRET
NEXT_PUBLIC_CLERK_FRONTEND_API_URL
NEXT_PUBLIC_CLERK_SIGN_IN_URL=/sign-in
NEXT_PUBLIC_CLERK_SIGN_UP_URL=/sign-up
NEXT_PUBLIC_CLERK_AFTER_SIGN_IN_URL=/
NEXT_PUBLIC_CLERK_AFTER_SIGN_UP_URL=/

ELEVENLABS_API_KEY=your_text_to_speech_api
  1. Run the development server:
npm run dev

Open http://localhost:3000 in your browser.


πŸ“ Project Structure

podcasty/
β”œβ”€β”€ app/
β”‚   β”œβ”€β”€ (auth)/               # Authentication routes
β”‚   β”œβ”€β”€ (root)/               # Main application routes
β”‚   └── api/                  # API routes
β”œβ”€β”€ components/               # Reusable components
β”œβ”€β”€ constants/                # Application constants
β”œβ”€β”€ hooks/                    # Custom React hooks
β”œβ”€β”€ lib/
β”‚   β”œβ”€β”€ actions/              # Server actions
β”‚   β”œβ”€β”€ models/               # Database models
β”‚   └── utils                 # Helper functions
β”œβ”€β”€ providers/                # Context providers
β”œβ”€β”€ public/                   # Static assets
└── types/                    # TypeScript type definitions

πŸ”Œ API Endpoints

Test-To-Speech

  • POST /api/tts - post get ai audio from text prompt

πŸš€ Deployment

You can deploy Podcasty on Vercel with ease:

Live App: https://podcasty-rust.vercel.app

  1. Push your code to GitHub
  2. Create a new project on Vercel
  3. Connect your GitHub repository
  4. Add your environment variables in the Vercel dashboard
  5. Click Deploy

Deploy with Vercel


🀝 Contributing

We welcome contributions from the community!

  1. Fork the repository
  2. Create a new branch: git checkout -b feature/your-feature
  3. Commit your changes: git commit -m 'Add some feature'
  4. Push to your branch: git push origin feature/your-feature
  5. Open a Pull Request

πŸ“„ License

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


πŸ“¬ Contact

Mouad Khanouch Email: mouadmouadkhanouch@gmail.com GitHub: https://github.com/MD-MOUAD/podcasty

About

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published