Transform your videos into engaging blog posts instantly using the power of AI! This full-stack SaaS application leverages cutting-edge technologies to provide a seamless video-to-blog conversion experience.
- 🤖 AI-powered video transcription using OpenAI Whisper API
- ✍️ Automatic blog post generation from transcriptions
- 📝 Markdown editor for post-generation content refinement
- 🎨 Beautiful, responsive user interface
- 🔐 Secure authentication via Clerk
- Passkey support
- GitHub OAuth integration
- Google Sign-in
- 🛡️ Protected routes and API endpoints
- 🔒 Secure file handling
- 📤 File uploads (up to 25MB) via UploadThing
- 💾 Serverless database with NeonDb
- 💳 Stripe integration for payments
- Custom pricing tables
- Subscription management
- Payment links
- Webhook implementation
- 🔄 Real-time updates and path revalidation
- 📱 Fully responsive design (mobile + desktop)
- 📊 Intuitive user dashboard
- 🔔 Toast notifications for user feedback
- 📈 SEO-optimized blog posts
- 🚀 Optimized performance
- Frontend Framework: Next.js 14 (App Router)
- Authentication: Clerk
- Database: NeonDb
- Styling: TailwindCSS + ShadCN UI
- File Uploads: UploadThing
- Payments: Stripe
- AI Integration: OpenAI API
- Language: TypeScript
- Content: React Markdown
- Deployment: Vercel
Node.js 18+ (LTS recommended)
pnpm (or npm/yarn)
- Clone the repository:
git clone https://github.com/abhiya492/motion-ai.git
cd motion-ai
- Install dependencies:
pnpm install
- Set up environment variables:
cp .env.example .env.local
- Configure your environment variables:
# Authentication
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=
CLERK_SECRET_KEY=
# Database
DATABASE_URL=
# OpenAI
OPENAI_API_KEY=
# Upload Thing
UPLOADTHING_SECRET=
UPLOADTHING_APP_ID=
# Stripe
STRIPE_SECRET_KEY=
STRIPE_WEBHOOK_SECRET=
NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY=
- Run the development server:
pnpm dev
Visit http://localhost:3000
to see your app running!
└── abhiya492-motion-ai/
├── README.md
├── components.json
├── middleware.ts
├── next.config.mjs
├── package.json
├── postcss.config.mjs
├── tailwind.config.ts
├── tsconfig.json
├── .eslintrc.json
├── actions/
│ ├── edit-actions.ts
│ └── upload-actions.ts
├── app/
│ ├── globals.css
│ ├── layout.tsx
│ ├── page.tsx
│ ├── (logged-in)/
│ │ ├── dashboard/
│ │ ├── posts/
│ │ ├── sign-in/
│ │ └── sign-up/
│ ├── api/
│ │ ├── payments/
│ │ └── uploadthing/
│ └── fonts/
├── components/
│ ├── common/
│ ├── content/
│ ├── home/
│ ├── ui/
│ └── upload/
├── hooks/
│ └── use-toast.ts
├── lib/
│ ├── constants.ts
│ ├── db.ts
│ ├── payment-helpers.ts
│ ├── user-helpers.ts
│ └── utils.ts
└── utils/
└── uploadthing.ts
Key directories and their purposes:
actions/
: Server actions for handling uploads and editsapp/
: Next.js 14 app directory containing routes and API endpointscomponents/
: Reusable React components organized by featurecommon/
: Shared components like backgroundscontent/
: Content editing related componentshome/
: Landing page componentsui/
: Basic UI components (buttons, inputs, etc.)upload/
: File upload related components
hooks/
: Custom React hookslib/
: Utility functions and helpersutils/
: Additional utilities and configurations
- Upload videos up to 25MB
- Automatic transcription using OpenAI Whisper
- AI-powered blog post generation
- Custom formatting options
- Rich text editor for post refinement
- SEO optimization tools
- Category management
- Draft and publish workflow
- Tiered pricing plans
- Usage tracking
- Payment processing
- Subscription management
This project is licensed under the MIT License - see the LICENSE.md file for details.
Contributions are welcome! Please feel free to submit a Pull Request.
- Next.js team for the amazing framework
- Clerk for secure authentication
- OpenAI for the powerful AI capabilities
- All other open-source contributors
Built with ❤️ using Next.js 14 and OpenAI