presenton/servers/nextjs
Christopher Quenneville f2703ec003 feat: add Open WebUI as image generation provider
Add native support for Open WebUI's image generation API as a new
image provider option. Open WebUI exposes an OpenAI-like
/v1/images/generations endpoint but with key differences that
require special handling:

- Response is a bare JSON array instead of {"data": [...]}
- Image URLs are relative paths (e.g. /api/v1/files/.../content)
- File downloads require the same Bearer auth token

The implementation uses raw HTTP calls via aiohttp rather than the
OpenAI SDK to handle these differences. No model parameter is sent
since Open WebUI manages the image model in its own admin settings.

Backend changes:
- New OPEN_WEBUI enum value in ImageProvider
- generate_image_open_webui() method in ImageGenerationService
- Environment getters/setters for OPEN_WEBUI_IMAGE_URL and
  OPEN_WEBUI_IMAGE_API_KEY
- UserConfig model and config loading/saving pipeline updated

Frontend changes:
- New "Open WebUI" option in image provider dropdown
- Settings UI with URL and optional API key fields
- Validation, field mappings, and config persistence

Docker:
- OPEN_WEBUI_IMAGE_URL and OPEN_WEBUI_IMAGE_API_KEY added to all
  docker-compose service definitions

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-05 12:27:45 -05:00
..
app feat: add Open WebUI as image generation provider 2026-04-05 12:27:45 -05:00
components feat: add Open WebUI as image generation provider 2026-04-05 12:27:45 -05:00
cypress test: add upload page component test 2025-05-11 02:16:53 +05:45
lib refactor (Nextjs): Unused files and function removed 2025-07-19 22:59:02 +05:45
models feat(nextjs): adds basic slide scraper endpoint, feat(fastapi): adds presentation export endpoint and pptx creator service 2025-07-18 08:16:35 +05:45
public feat: update font usage across components to include Syne and Unbounded, enhancing typography consistency 2026-03-04 11:44:10 +05:45
store feat: OnBoarding two pages design 2026-03-04 00:32:14 +05:45
types feat: add Open WebUI as image generation provider 2026-04-05 12:27:45 -05:00
utils feat: add Open WebUI as image generation provider 2026-04-05 12:27:45 -05:00
components.json Initial: presenton 2025-05-10 19:57:24 +05:45
cypress.config.ts test: add upload page component test 2025-05-11 02:16:53 +05:45
next-env.d.ts feat(nextjs): Timer added in Each layout convert 2025-08-09 20:00:00 +05:45
next.config.mjs update: add dev docker deps in prod 2025-08-11 03:02:28 +05:45
package-lock.json feat: add theme management endpoints, integrate color palette generation and UI implementation 2026-03-02 23:15:15 +05:45
package.json feat: add theme management endpoints, integrate color palette generation and UI implementation 2026-03-02 23:15:15 +05:45
postcss.config.mjs feat(nextjs): Header added on custom layout and layout preview 2025-08-02 15:30:56 +05:45
README.md Initial: presenton 2025-05-10 19:57:24 +05:45
tailwind.config.ts feat: update font usage across components to include Syne and Unbounded, enhancing typography consistency 2026-03-04 11:44:10 +05:45
tsconfig.json chore: updates presentation-layouts to presentation-templates 2025-08-11 15:12:59 +05:45
tsconfig.tsbuildinfo update: add dev docker deps in prod 2025-08-11 03:02:28 +05:45

This is a Next.js project bootstrapped with create-next-app.

Getting Started

First, run the development server:

npm run dev
# or
yarn dev
# or
pnpm dev
# or
bun dev

Open http://localhost:3000 with your browser to see the result.

You can start editing the page by modifying app/page.tsx. The page auto-updates as you edit the file.

This project uses next/font to automatically optimize and load Geist, a new font family for Vercel.

Learn More

To learn more about Next.js, take a look at the following resources:

You can check out the Next.js GitHub repository - your feedback and contributions are welcome!

Deploy on Vercel

The easiest way to deploy your Next.js app is to use the Vercel Platform from the creators of Next.js.

Check out our Next.js deployment documentation for more details.