A modern web application for AI-powered podcast clipping and management. Built with Next.js 15, TypeScript, and a robust tech stack for seamless audio content processing.
- π€ AI-powered podcast clipping
- π€ User authentication and authorization
- π³ Stripe payment integration
- βοΈ AWS S3 file storage
- π Dashboard with analytics
- π Background job processing with Inngest
- π± Responsive design with Tailwind CSS
- π¨ Modern UI components with Radix UI
- Next.js 15 - React framework with App Router
- React 19 - UI library
- TypeScript - Type safety
- Tailwind CSS 4 - Utility-first CSS framework
- Radix UI - Unstyled, accessible UI components
- Framer Motion - Animation library
- React Hook Form - Form handling
- Zod - Schema validation
- Prisma - Database ORM
- NextAuth.js 5 - Authentication
- bcryptjs - Password hashing
- AWS S3 - File storage
- Stripe - Payment processing
- Inngest - Background job processing
- ESLint - Code linting
- Prettier - Code formatting
- TypeScript - Static type checking
Before you begin, ensure you have the following installed:
- Node.js (v18 or higher)
- npm (v10.8.2 or higher)
- Database (PostgreSQL, MySQL, or SQLite)
git clone <your-repo-url>
cd ai-podclip-web
npm install
Copy the example environment file and configure your variables:
cp .env.example .env
Update the .env
file with your configuration:
# Database
DATABASE_URL="your-database-connection-string"
# NextAuth.js
NEXTAUTH_SECRET="your-nextauth-secret"
NEXTAUTH_URL="http://localhost:3000"
# AWS S3
AWS_ACCESS_KEY_ID="your-aws-access-key"
AWS_SECRET_ACCESS_KEY="your-aws-secret-key"
AWS_REGION="your-aws-region"
AWS_S3_BUCKET_NAME="your-s3-bucket-name"
# Stripe
STRIPE_SECRET_KEY="your-stripe-secret-key"
STRIPE_PUBLISHABLE_KEY="your-stripe-publishable-key"
STRIPE_WEBHOOK_SECRET="your-stripe-webhook-secret"
# Inngest
INNGEST_EVENT_KEY="your-inngest-event-key"
INNGEST_SIGNING_KEY="your-inngest-signing-key"
# Generate Prisma client
npm run postinstall
# Run database migrations
npm run db:migrate
# (Optional) Push schema changes for development
npm run db:push
# (Optional) Open Prisma Studio to view your data
npm run db:studio
# Make the script executable
chmod +x start-database.sh
# Run the database startup script
./start-database.sh
Start the development server:
npm run dev
The application will be available at http://localhost:3000
src/
βββ actions/ # Server actions
β βββ auth.ts
β βββ generation.ts
β βββ s3.ts
β βββ stripe.ts
βββ app/ # Next.js App Router
β βββ api/ # API routes
β βββ dashboard/ # Dashboard pages
β βββ demo/ # Demo page
β βββ login/ # Authentication pages
β βββ signup/
βββ components/ # React components
β βββ ui/ # Reusable UI components
β βββ ... # Feature-specific components
βββ inngest/ # Background job functions
βββ lib/ # Utility functions
βββ schemas/ # Zod validation schemas
βββ server/ # Server configuration
βββ styles/ # Global styles
npm run dev # Start development server with Turbo
npm run build # Build for production
npm run start # Start production server
npm run preview # Build and start production server
npm run db:generate # Generate and run migrations
npm run db:migrate # Deploy migrations
npm run db:push # Push schema changes
npm run db:studio # Open Prisma Studio
npm run lint # Run ESLint
npm run lint:fix # Fix ESLint issues
npm run typecheck # Run TypeScript checks
npm run check # Run lint and typecheck
npm run format:check # Check code formatting
npm run format:write # Format code with Prettier
This project uses NextAuth.js v5 for authentication. To set up authentication providers:
- Configure your authentication providers in
src/server/auth/config.ts
- Update the database schema if needed
- Run database migrations:
npm run db:migrate
For payment processing:
- Set up your Stripe account and get API keys
- Configure webhook endpoints in your Stripe dashboard
- Update the webhook handler in
src/app/api/webhooks/stripe/route.ts
For file uploads and storage:
- Create an S3 bucket in your AWS account
- Set up appropriate IAM permissions
- Configure CORS settings for your bucket
- Update the S3 configuration in your environment variables
This project uses Inngest for background job processing:
- Set up your Inngest account
- Configure event keys and signing keys
- Deploy your functions to handle background tasks
npm run build
npm run start
Ensure all production environment variables are properly configured in your deployment platform.
Run migrations in production:
npm run db:migrate
- Fork the repository
- Create a feature branch:
git checkout -b feature/your-feature
- Commit your changes:
git commit -m 'Add some feature'
- Push to the branch:
git push origin feature/your-feature
- Open a pull request
If you encounter any issues:
- Check the existing issues in the repository
- Run
npm run check
to verify your setup - Ensure all environment variables are properly configured
- Check the console for any error messages
Built with β€οΈ using Next.js, TypeScript, and modern web technologies.