A next-generation AI-powered presentation creation platform that transforms your ideas into stunning, professional presentations with the power of artificial intelligence.
- ๐ค AI-Powered Content Generation: Create complete presentations from simple prompts
- ๐จ Customizable Themes: Choose from a variety of professional themes or create your own
- ๐ผ๏ธ Rich Media Support: Embed videos, charts, interactive elements, and forms
- ๐ Smart Layout Engine: Automatically organize content for optimal visual impact
- ๐ฅ Collaborative Editing: Work together with your team in real-time
- ๐ค Export Options: Download as PDF, export to PowerPoint, or present directly from the web
- Demo
- Getting Started
- Self-Hosting & Deployment
- Environment Configuration
- Project Structure
- Architecture
- API
- CI/CD & Testing
- Contributing
- License
Visit our live demo (coming soon) to experience the platform.
Before you begin, ensure you have the following installed:
- Node.js (v18 or later)
- npm (v8 or later)
- Docker (optional, for containerized deployment)
- Python (v3.9 or later, for AI service)
- Clone the repository
git clone https://github.com/marvelai-org/PresentationGenerator.git
cd PresentationGenerator- Install dependencies
npm ci- Create a
.envfile based on.env.example
cp .env.example .env- Update the environment variables with your own values
Start the development server:
npm run devThis will start the application at http://localhost:3000.
Run tests:
npm testRun linting:
npm run lintFormat code:
npm run formatThis repository includes a Python-based AI service for presentation generation:
- Navigate to the AI service directory:
cd ai-services- Create a virtual environment (optional but recommended):
python -m venv venv
source venv/bin/activate # On Windows, use: venv\Scripts\activate- Install dependencies:
pip install -r requirements.txt- Run the service:
python app.pyThe API will be available at http://localhost:8000.
The easiest way to deploy the application is using Docker Compose:
- Clone this repository
- Configure your environment variables in a
.envfile (see Environment Configuration) - Run
docker-compose up -d
The application will be available at http://localhost:3000.
For detailed deployment instructions, see docs/deployment.md.
The project includes GitHub Actions workflows for continuous integration and deployment:
- Automated linting and testing
- Build process for the Next.js application
- Docker image creation for easy deployment
All workflows are vendor-agnostic and focused on building, testing, and packaging the application for self-hosting.
Create a .env file in the root directory with the following variables (see .env.example for a template):
# Database
DATABASE_URL="postgresql://username:password@host:port/database"
# Authentication (Supabase)
NEXT_PUBLIC_SUPABASE_URL="https://your-project.supabase.co"
NEXT_PUBLIC_SUPABASE_ANON_KEY="your-supabase-anon-key"
SUPABASE_SERVICE_ROLE_KEY="your-service-role-key"
# AI APIs
OPENAI_API_KEY="your-openai-api-key"
COHERE_API_KEY="your-cohere-api-key"
# Vector DB (Optional)
QDRANT_API_KEY="your-qdrant-api-key"
QDRANT_URL="your-qdrant-url"
For local development without Supabase credentials, you can enable mock authentication:
# Set CI_ENVIRONMENT to true in your .env file
echo "CI_ENVIRONMENT=true" >> .envThis enables the mock Supabase client which allows the application to function without real credentials.
.
โโโ ai-services/ # Python-based AI service
โโโ docs/ # Documentation files
โโโ prisma/ # Database schema and migrations
โโโ public/ # Static assets
โโโ src/ # Source code
โ โโโ app/ # Next.js App Router routes
โ โโโ components/ # Reusable React components
โ โโโ lib/ # Utility functions and services
โ โโโ providers/ # React context providers
โ โโโ styles/ # Global styles
โ โโโ types/ # TypeScript type definitions
โโโ .env.example # Example environment variables
โโโ docker-compose.yml # Docker Compose configuration
โโโ Dockerfile # Docker configuration
โโโ README.md # Project documentation
The project is built with a modern tech stack and architecture:
- Frontend: Next.js, React, Tailwind CSS
- Backend: Next.js API routes, Python FastAPI
- Database: PostgreSQL with Prisma ORM
- Authentication: Supabase Auth
- AI: Integration with various AI models via AI service
- Vector Storage: Qdrant for embeddings (optional)
The AI service provides endpoints for generating and editing presentations:
GET /- Health check endpointPOST /generate-presentation- Generates a presentation from a promptPOST /edit-slide- Edits a specific slidePOST /preview-slide- Generates a preview image for a slide
Full API documentation is available when running the service at:
- Swagger UI:
http://localhost:8000/docs - ReDoc:
http://localhost:8000/redoc
The project includes GitHub Actions workflows for continuous integration and deployment:
- Automated linting and testing
- Build process for the Next.js application
- Docker image creation for easy deployment
All workflows are vendor-agnostic and focused on building, testing, and packaging the application for self-hosting.
For CI/CD environments, the project uses a mock authentication strategy that:
- Automatically detects CI environments
- Uses mock Supabase clients and dummy credentials
- Allows builds and tests to run without real authentication keys
For more information, see docs/ci-cd-auth-mocking.md.
We welcome contributions! Please check out our contribution guidelines first.
- Fork the repository
- Create a new branch (
git checkout -b feature/amazing-feature) - Make your changes
- Run tests and linting
- Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
For major changes, please open an issue first to discuss what you would like to change.
This project is licensed under the MIT License - see the LICENSE file for details.