DEV Community

How I built multi-provider AI (OpenAI/Groq/Claude/Gemini) in Next.js 15 — switchable from admin panel

I built an invoice SaaS and the most interesting part was making AI providers switchable at runtime.

Here's the core idea — provider and model stored as DB singleton:

const settings = await db.aISettings.findUnique({ where: { id: "singleton" } });

switch (settings.provider) {
case "openai":
case "groq": // same OpenAI-compatible API
return generateOpenAICompat(settings, apiKey, prompt);
case "anthropic":
return generateAnthropic(settings, apiKey, prompt);
case "gemini":
return generateGemini(settings, apiKey, prompt);
}

Admin changes provider in UI → takes effect immediately, no restart.

Also used pdf-lib for server-side PDF (no Puppeteer) and Vercel Cron for recurring invoices.
https://stepanova12.gumroad.com/l/urykyi
https://nastasiia16.lemonsqueezy.com/checkout/buy/3d3e5ae5-f8fc-46bc-a1bd-1ba9d8271d34

Top comments (0)