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.
- 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
- Custom audio player controls
- Background audio persistence
- Upload podcasts with images and audio
- Edit podcast details and metadata
- Delete podcasts (with Cloudinary media cleanup)
- View podcast analytics (plays, duration)
- Next.js 14 (App Router)
- React 18
- TypeScript
- Tailwind CSS
- shadcn/ui
- Zod (form validation)
- Next.js API Routes with server actions
- Mongoose (MongoDB ODM)
- Cloudinary (media storage)
- Clerk (authentication)
- MongoDB (via MongoDB Atlas)
- Node.js 18+
- MongoDB Atlas account
- Cloudinary account
- Clerk account
- Clone the repository:
git clone https://github.com/MD-MOUAD/podcasty.git
cd podcasty- Install dependencies:
npm install- Set up environment variables:
Create a
.env.localfile 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- Run the development server:
npm run devOpen http://localhost:3000 in your browser.
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
POST /api/tts- post get ai audio from text prompt
You can deploy Podcasty on Vercel with ease:
Live App: https://podcasty-rust.vercel.app
- Push your code to GitHub
- Create a new project on Vercel
- Connect your GitHub repository
- Add your environment variables in the Vercel dashboard
- Click Deploy
We welcome contributions from the community!
- Fork the repository
- Create a new branch:
git checkout -b feature/your-feature - Commit your changes:
git commit -m 'Add some feature' - Push to your branch:
git push origin feature/your-feature - Open a Pull Request
This project is licensed under the MIT License. See the LICENSE file for details.
Mouad Khanouch Email: mouadmouadkhanouch@gmail.com GitHub: https://github.com/MD-MOUAD/podcasty