An AI-powered presentation generator that transforms your ideas into professional presentations in seconds.
- AI-Powered Generation: Uses OpenAI GPT-4 to create structured presentation outlines
- Customizable Settings: Choose slide count, tone (professional/casual/creative), and purpose (pitch/report/educational/marketing/general)
- Professional Layouts: 9 different slide layouts for visual variety
- No Authentication Required: Simple, frictionless experience
- Modern UI: Built with Next.js 14, TypeScript, and Tailwind CSS
- Frontend: Next.js 14, TypeScript, Tailwind CSS, shadcn/ui
- Backend: Next.js API Routes, Drizzle ORM, PostgreSQL
- AI: OpenAI GPT-4o-mini
- Database: PostgreSQL (Docker)
- Node.js 18+ and npm
- Docker and Docker Compose
- OpenAI API key
- Clone the repository:
git clone <your-repo-url>cd ppt-maker- Install dependencies:
npm install- Set up environment variables:
Create a .env.local file in the root directory:
# Database (Docker Compose PostgreSQL)
DATABASE_URL="postgresql://pptmaker:pptmaker_dev@localhost:5432/pptmaker"# OpenAI
OPENAI_API_KEY="sk-..."# App URLs
NEXT_PUBLIC_APP_URL="http://localhost:3000"- Start PostgreSQL with Docker:
# Start PostgreSQL container
docker-compose up -d
# Check if PostgreSQL is running
docker ps- Set up the database:
# Generate migrations
npx drizzle-kit generate
# Push to database
npx drizzle-kit push
# (Optional) View database in Drizzle Studio
npx drizzle-kit studio- Run the development server:
npm run devOpen http://localhost:3000 in your browser.
- Navigate to Create: Click "Get Started" or go to
/create - Enter Prompt: Describe your presentation topic and requirements
- Configure Settings: Select slide count, tone, and purpose
- Generate: Click "Generate Presentation" and wait for AI to create your outline
- View Outline: Review the generated slides with titles, key points, and visual suggestions
ppt-maker/
├── app/
│ ├── (protected)/ # Protected routes (no auth required now)
│ │ ├── dashboard/ # User dashboard
│ │ ├── create/ # Presentation creation
│ │ └── presentations/ # Presentation view
│ └── api/
│ └── generate/ # AI generation endpoints
├── components/
│ ├── ui/ # shadcn/ui components
│ ├── layout/ # Layout components
│ ├── create/ # Creation components
│ └── outline/ # Outline display components
├── lib/
│ ├── ai/ # OpenAI integration
│ ├── db/ # Database and queries
│ └── utils/ # Utility functions
├── types/ # TypeScript types
├── docs/ # Documentation
└── docker-compose.yml # PostgreSQL container
# Start PostgreSQL
docker-compose up -d
# Stop PostgreSQL
docker-compose down
# View logs
docker-compose logs -f postgres
# Restart PostgreSQL
docker-compose restart
# Remove database (WARNING: deletes all data)
docker-compose down -vnpm run dev # Start development server
npm run build # Build for production
npm run start # Start production server
npm run lint # Run ESLint# Generate migrations
npx drizzle-kit generate
# Push schema to database
npx drizzle-kit push
# View database in Drizzle Studio
npx drizzle-kit studioSee .env.example for all required environment variables.
For deployment with Docker PostgreSQL, ensure your hosting platform supports Docker Compose or set up PostgreSQL separately.
- Push your code to GitHub
- Import your repository in Vercel
- Configure environment variables (use external PostgreSQL like Neon or Supabase for production)
- Deploy
Ensure your platform supports:
- Node.js 18+
- PostgreSQL database connection
- Environment variables
Contributions are welcome! 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
This project is licensed under the ISC License.
For issues and questions:
- Check the documentation
- Open an issue on GitHub
Built with ❤️ using Next.js and AI