- Smart Content Creation: Transform simple ideas into comprehensive podcast scripts using Google's Gemini AI
- Multiple Themes: Choose from 8 different podcast styles (Casual, Professional, Educational, Entertaining, etc.)
- Intelligent Script Structure: Automatically generates titles, descriptions, and structured content with speaker assignments
- 7 Supported Languages: English, Hindi, Bengali, French, German, Italian, Tamil
- Multiple Voice Options: Choose from a variety of high-quality voices for each language
- Multi-Speaker Support: Add up to 5 different speakers per language for dynamic conversations
- Audio Playback & Download: Built-in audio player with download functionality
- Personal Library: Browse and manage all your generated podcasts
- User Authentication: Secure login/signup with NextAuth
- All Podcasts vs My Podcasts: Toggle between viewing all podcasts and your personal creations
- Search & Filter: Find podcasts by title, description, or content
- Responsive Design: Works seamlessly on desktop and mobile devices
- Beautiful Components: Built with Radix UI and TailwindCSS
- Dark/Light Mode: Automatic theme switching support
- Real-time Feedback: Toast notifications and loading states
Before running this application, make sure you have:
- Node.js (version 18 or higher)
- npm or yarn package manager
- MongoDB database (local or MongoDB Atlas)
- Google Gemini API key
- Azure Blob Storage account (for audio file storage)
Create a .env.local file in the root directory with the following variables:
# Database
MONGODB_URI=mongodb://localhost:27017/murphy
# or for MongoDB Atlas:
# MONGODB_URI=mongodb+srv://username:password@cluster.mongodb.net/murphy
# NextAuth Configuration
NEXTAUTH_URL=http://localhost:3000
NEXTAUTH_SECRET=your-nextauth-secret-key
# Google Gemini AI
GEMINI_API_KEY=your-gemini-api-key
# Azure Blob Storage (for audio files)
AZURE_STORAGE_CONNECTION_STRING=your-azure-storage-connection-string
AZURE_STORAGE_CONTAINER_NAME=your-container-name
-
Clone the repository
git clone https://github.com/Samarth-T17/murfy.git cd murfy/murphy -
Install dependencies
npm install # or yarn install -
Set up environment variables
cp .env.example .env.local # Edit .env.local with your actual values -
Run the development server
npm run dev # or yarn dev -
Open your browser Navigate to http://localhost:3000
murphy/
βββ src/
β βββ app/ # Next.js 13+ App Router
β β βββ api/ # API routes
β β β βββ auth/ # NextAuth endpoints
β β β βββ generate-audio/ # Audio generation API
β β β βββ podcasts/ # Podcast CRUD operations
β β βββ auth/ # Authentication pages
β β β βββ signin/ # Sign in page
β β β βββ signup/ # Sign up page
β β βββ generate-podcast/ # Podcast creation interface
β β βββ podcasts/ # Podcast browsing & details
β β β βββ [id]/ # Individual podcast page
β β βββ globals.css # Global styles
β β βββ layout.tsx # Root layout component
β β βββ page.tsx # Homepage
β βββ components/ # Reusable UI components
β β βββ ui/ # Shadcn/ui components
β β βββ Navigation.tsx # Main navigation component
β βββ lib/ # Utility libraries
β β βββ auth.ts # NextAuth configuration
β β βββ firebase.ts # MongoDB connection & operations
β β βββ voices.ts # Voice options for TTS
β β βββ langVoiceType.ts # Language-voice mapping types
β β βββ utils.ts # General utilities
β βββ gemini/ # Google Gemini AI integration
β β βββ content.ts # Content generation logic
β βββ murphy/ # Additional modules
β βββ contents.ts # Content management
βββ public/ # Static assets
βββ package.json # Dependencies and scripts
βββ next.config.ts # Next.js configuration
βββ tailwind.config.js # TailwindCSS configuration
βββ tsconfig.json # TypeScript configuration
- Next.js 15.5.0 - React framework with App Router
- React 19.1.0 - UI library
- TypeScript 5.0 - Type-safe JavaScript
- TailwindCSS 4.0 - Utility-first CSS framework
- Radix UI - Accessible component primitives
- Lucide React - Beautiful icons
- MongoDB - NoSQL database for podcast storage
- NextAuth.js - Authentication solution
- Azure Blob Storage - Cloud storage for audio files
- Google Gemini AI - Content generation
- MURF API's - Multi-language voice synthesis
- FFmpeg - Audio processing
- ESLint - Code linting
- Prettier - Code formatting
- Turbopack - Fast bundler for development
-
Sign Up/Login
- Navigate to the authentication page
- Create an account or sign in with existing credentials
-
Generate Content
- Go to "Generate Podcast" page
- Enter your podcast idea
- Select a theme (Casual, Professional, Educational, etc.)
- Click "Generate Content" to create your script
-
Configure Audio
- Choose target languages for audio generation
- Select voice options for each language
- Add multiple speakers if desired (up to 5 per language)
-
Generate Audio
- Review and edit the generated content if needed
- Click "Generate Audio" to create voice files
- Preview audio with built-in player
- Download generated audio files
-
Manage Podcasts
- View all your podcasts in the "My Podcasts" section
- Browse community podcasts in "All Podcasts"
- Search and filter podcasts by content
- Switch between "Generated" and "Edited" tabs
- Make custom modifications to AI-generated content
- Real-time word count tracking
- Copy content to clipboard
- Generate podcasts in multiple languages simultaneously
- Language-specific voice selection
- Automatic script translation (when supported)
- Choose from various voice personas
- Add/remove speakers dynamically
- Preview voice options before generation
POST /api/auth/signin # User sign in
POST /api/auth/signup # User registration
GET /api/auth/session # Get current sessionGET /api/podcasts # Get all podcasts or user's podcasts
GET /api/podcasts/[id] # Get specific podcast
POST /api/podcasts # Create new podcast
PUT /api/podcasts/[id] # Update podcast
DELETE /api/podcasts/[id] # Delete podcastPOST /api/generate-audio # Generate audio from content- Secure Authentication - NextAuth.js with secure session handling
- Password Hashing - bcryptjs for secure password storage
- Environment Variables - Sensitive data protection
- API Route Protection - Server-side authentication checks
- Input Validation - Client and server-side validation
We welcome contributions! Please follow these steps:
- Fork the repository
- Create a feature branch
git checkout -b feature/amazing-feature
- Commit your changes
git commit -m 'Add amazing feature' - Push to the branch
git push origin feature/amazing-feature
- Open a Pull Request
- Follow TypeScript best practices
- Use meaningful commit messages
- Add tests for new features
- Update documentation as needed
- Follow the existing code style
This project is licensed under the MIT License - see the LICENSE file for details.
- MURF AI - For providing TTS and translation api
- Google Gemini AI - For intelligent content generation
- Radix UI - For accessible component primitives
- MongoDB - For reliable database services
- Azure - For media storage and deployment
- GitHub Issues: Report bugs or request features
- Documentation: Check our Wiki for detailed guides
- Community: Join our discussions in GitHub Discussions
Made with β€οΈ by Samarth and Pavan :)
β Star this repository β’ π Report Bug β’ β¨ Request Feature