Self-Host FeedLog: AI Support + Feedback Boards on Docker, Vercel, or Cloudflare Workers
Optional Later
Optional later: OAuth providers, transactional email (status notifications, password reset), and object storage for attachments.
Similar Feedback with Postgres Vectors
Duplicate feature requests are the silent killer of feedback boards. FeedLog's similar-idea path stores embeddings (documented as OpenAI text-embedding-3-large at 768 dimensions in the project README) and uses pgvector so new posts can surface near-duplicates before the board fragments.
Engineering takeaway: treat vector as a first-class dependency in your infra checklist, same as the app image. If you migrate hosts later, back up embeddings with the rest of Postgres - they are part of product memory, not cache.
Embed the Widget SDK
Customers should not leave your product to ask a question or cast a vote. Install the package:
npm install @feedlog/widget
Guest-only bootstrap:
import { createWidget } from '@feedlog/widget'
createWidget({
baseUrl: 'https://acme.feedlog.ai', // your workspace URL
theme: 'auto',
})
For product accounts, pass auth.getToken (server-signed HS256 JWT with required email and exp) and optional auth.login that opens your existing sign-in UI.
Call createWidget() once in client-only startup - a Nuxt .client plugin is a natural fit; the package can be imported during SSR, but initialization must run in the browser. openWidget() / closeWidget() / updateWidget() let you hide the default launcher and drive Help from your own nav, sync theme, and adjust zIndex so the panel does not fight your modals.
When a customer sends a message, the widget shares page path, title, and meta description as Agent context (query strings and body content are excluded). Step-by-step options, SSO claims, and troubleshooting live in the widget installation guide.
Suggested Rollout for a SaaS Team
- Stand up cloud (currently free) or self-host with Docker + vector.
- Seed Help Center collections the Agent should cite.
- Enable the widget in Settings → Widget; ship
@feedlog/widgetbehind your auth. - Triage inbox → boards; keep Open internal, publish Planned/In Progress on the roadmap.
- Close the loop with changelog entries when posts hit Completed.
You end up with one MIT codebase instead of a support SaaS plus a feedback SaaS - and you can inspect every migration, Nitro route, and widget call yourself. Clone it, enable vector, set the three required secrets, and put the widget on a staging page before you invite your first customer into the loop.
Comments
No comments yet. Start the discussion.