Skip to content

arshia-pourfar/assist-chatbot

Repository files navigation

Assist Chatbot (Single Next.js App)

Unified Next.js + TypeScript + Prisma + PostgreSQL chatbot platform with multi-tenant bot management and embeddable widget.

Architecture

  • Next.js App Router (UI + API Route Handlers)
  • Prisma ORM + PostgreSQL
  • JWT auth
  • AES-256-GCM encryption for per-bot AI keys
  • In-memory rate limit
  • Vanilla JS widget (public/widget.js) with Shadow DOM

Gemini Defaults

  • Default model: gemini-2.5-flash
  • Default provider base URL: https://generativelanguage.googleapis.com/v1beta/models
  • API key header to provider: x-goog-api-key

Pages

  • /login
  • /dashboard
  • /bots
  • /bots/[id]/edit
  • /bots/[id]/style
  • /bots/[id]/knowledge

API Routes

Auth

  • POST /api/auth/register
  • POST /api/auth/login

Bots (JWT required)

  • GET /api/bots
  • POST /api/bots
  • GET /api/bots/[id]
  • PATCH /api/bots/[id]
  • GET /api/bots/[id]/models (checks available Gemini models using this bot's API key)

Knowledge (JWT required)

  • GET /api/bots/[id]/knowledge
  • POST /api/bots/[id]/knowledge
  • POST /api/bots/[id]/knowledge/import (upload PDF/Excel and convert into knowledge entries)
  • PATCH /api/bots/[id]/knowledge/[knowledgeId]
  • DELETE /api/bots/[id]/knowledge/[knowledgeId]

Widget / Chat (public)

  • GET /api/widget/config/[id]
  • POST /api/chat
  • OPTIONS /api/chat (CORS preflight)
  • OPTIONS /api/widget/config/[id] (CORS preflight)

Setup

  1. Install dependencies:
npm install
  1. Create env file:
cp .env.example .env
  1. Start PostgreSQL:
docker compose up -d
  1. Run migrations:
npx prisma migrate dev --name init
  1. Run app:
npm run dev

Widget Embed

<script src="https://your-domain.com/widget.js" data-bot-id="YOUR_BOT_ID" data-api-base-url="https://your-domain.com"></script>

Security

  • Encrypted API keys at rest
  • Domain whitelist check for widget config and chat
  • Per-bot rate limiting in memory
  • Prompt scope control with role + topics + knowledge

Knowledge File Import

  • Upload PDF or Excel (.xlsx, .xls, .csv) in /bots/[id]/knowledge
  • Excel is generally better for structured store data (products, prices, inventory)
  • PDF is useful for long-form descriptions, policies, and personal site context
  • Imported content is chunked into multiple knowledge rows automatically

About

Multi-tenant AI chatbot platform built with Next.js, TypeScript, Prisma, and PostgreSQL, featuring embeddable widgets, knowledge import (PDF/Excel), JWT auth, encrypted API keys, and Gemini integration.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors