Skip to content

Latest commit

 

History

History
38 lines (26 loc) · 1.86 KB

File metadata and controls

38 lines (26 loc) · 1.86 KB

Contributing to openConcierge

Thanks for your interest! openConcierge is an open-source, self-hosted AI concierge for customer support — an AI-native alternative to Intercom / Channel Talk.

Dev setup

Requires Docker (or a local Postgres 15+ with the pgvector extension) and Node 20+.

cp .env.example .env      # set DATABASE_URL + ANTHROPIC_API_KEY + an embeddings key (for AI)
npm install
npm run db:migrate        # apply db/migrations/*.sql + db/seed.sql (needs a pgvector Postgres)
npm run dev               # http://localhost:3000

Or docker compose up to run Postgres+pgvector and the app together.

  • npm run build — production build; also runs the TypeScript type-check. Please make sure it passes before opening a PR.
  • npm run db:reset — drop + re-apply migrations + seed.
  • Migrations live in db/migrations/; add a new timestamped file rather than editing an applied one.

Architecture

The MVP is a deliberate wedge. Key decisions (do not casually undo):

  • Single-tenant self-host (one channel row) — but every table keeps channel_id for a future multi-tenant path.
  • Realtime is app-owned — Postgres LISTEN/NOTIFY fanned out to browsers over SSE (/api/stream). All publishing goes through src/lib/realtime.ts; clients only subscribe. No Supabase.
  • The widget is three frontends (loader IIFE → iframe SPA → desk), never one. See public/loader.js + src/app/widget.
  • The AI answers only from indexed knowledge, with citations, and hands off to a human on low confidence (src/lib/ai/).

Pull requests

  1. Branch from main.
  2. Keep changes focused; match the surrounding style (TypeScript, server actions in src/actions/).
  3. Ensure npm run build passes.
  4. Describe what you changed and how you tested it.

By contributing you agree your contributions are licensed under the MIT License.