Chat/voice widget platform + admin dashboard. This monorepo contains the embeddable widget, the admin app, and the Convex backend for data and AI integrations.
apps/web- Admin dashboard (Next.js 15) to manage orgs, contacts, and conversations.apps/widget- Chat/voice widget (Next.js 15) displayed on end-user websites.apps/embed- Embed script (Vite) that injects the button + widget iframe into any page.packages/backend- Convex functions, actions, and schema.packages/ui- Shared UI components, hooks, and styles.packages/math- Sample shared package (utility).
pnpm install
pnpm devDefault ports:
web: http://localhost:3000widget: http://localhost:3001embed: http://localhost:3002
Add this script to your website:
<script
src="https://convs-widget.vercel.app/widget.js"
data-organization-id="YOUR_ORG_ID"
data-position="bottom-right"
async
></script>Optional global API:
window.ConvsWidget.show();
window.ConvsWidget.hide();
window.ConvsWidget.destroy();
window.ConvsWidget.init({ organizationId: "YOUR_ORG_ID" });Set env per app as needed:
apps/web/.env.localNEXT_PUBLIC_CONVEX_URLNEXT_PUBLIC_CLERK_PUBLISHABLE_KEYCLERK_SECRET_KEYSENTRY_AUTH_TOKEN(optional)
apps/widget/.env.localNEXT_PUBLIC_CONVEX_URLNEXT_PUBLIC_CLERK_PUBLISHABLE_KEYCLERK_SECRET_KEY
packages/backend/.envCONVEX_DEPLOYMENTCONVEX_URLCLERK_*,OPENAI_API_KEY,GROQ_API_KEY,COHERE_API_KEY,AWS_*as required by integrations
apps/embedbuild outputsdist/widget.jsand auto-copies it toapps/widget/public/widget.js.- Embed config can override the widget URL via
VITE_WIDGET_URLinapps/embed/config.ts.
- The FAQ/knowledge base lives in
apps/embed/context.txtfor default widget content. - Widget screens include: selection, chat, inbox, voice, auth, contact, loading, error.