Kinexa Mitra CRM — Community Edition. Self-hostable open-source CRM engine (contacts, leads, pipeline, invoicing, email campaigns). AGPL-3.0.
  • TypeScript 99.4%
  • Dockerfile 0.6%
Find a file
Kinetikum 6a4d842c35 docs: add full INSTALL.md (Docker + manual, first-run, troubleshooting)
Verified against a fresh database: docker bootstrap migration path applies
all 20 tables incl crm_users; local tsx path + auth flow confirmed E2E.
2026-07-17 18:23:55 +07:00
drizzle Initial commit — Kinexa Mitra CRM Community Edition 2026-07-17 17:00:51 +07:00
src Initial commit — Kinexa Mitra CRM Community Edition 2026-07-17 17:00:51 +07:00
.env.example Initial commit — Kinexa Mitra CRM Community Edition 2026-07-17 17:00:51 +07:00
.gitignore Initial commit — Kinexa Mitra CRM Community Edition 2026-07-17 17:00:51 +07:00
CODE_OF_CONDUCT.md Initial commit — Kinexa Mitra CRM Community Edition 2026-07-17 17:00:51 +07:00
CONTRIBUTING.md Initial commit — Kinexa Mitra CRM Community Edition 2026-07-17 17:00:51 +07:00
docker-compose.yml Initial commit — Kinexa Mitra CRM Community Edition 2026-07-17 17:00:51 +07:00
Dockerfile Initial commit — Kinexa Mitra CRM Community Edition 2026-07-17 17:00:51 +07:00
drizzle.config.ts Initial commit — Kinexa Mitra CRM Community Edition 2026-07-17 17:00:51 +07:00
INSTALL.md docs: add full INSTALL.md (Docker + manual, first-run, troubleshooting) 2026-07-17 18:23:55 +07:00
LICENSE Initial commit — Kinexa Mitra CRM Community Edition 2026-07-17 17:00:51 +07:00
package-lock.json Initial commit — Kinexa Mitra CRM Community Edition 2026-07-17 17:00:51 +07:00
package.json Initial commit — Kinexa Mitra CRM Community Edition 2026-07-17 17:00:51 +07:00
README.md docs: add full INSTALL.md (Docker + manual, first-run, troubleshooting) 2026-07-17 18:23:55 +07:00
tsconfig.json Initial commit — Kinexa Mitra CRM Community Edition 2026-07-17 17:00:51 +07:00

Kinexa Mitra CRM — Community Edition

A self-hostable, open-source CRM engine: contacts, leads, pipeline, opportunities, activities, quotations & invoices, and SMTP-based email campaigns. Built with TypeScript, Hono, Drizzle ORM and PostgreSQL.

This is the Community Edition (CE) — the open core of Kinexa Mitra. It runs standalone with its own local authentication and a single workspace. The hosted Cloud edition adds WhatsApp messaging, an AI assistant, multi-tenant workspaces, and managed support — those are not part of this repository.

License: AGPL-3.0. If you run a modified version as a network service, you must offer your users the corresponding source. See LICENSE.

Features

  • Contacts — people & companies, tags, custom fields
  • Leads & Pipeline — stages, drag-through, conversion to opportunities
  • Opportunities — deals with value & stage tracking
  • Activities — tasks, calls, meetings
  • Quotations → Invoices — quote-to-cash documents with line items
  • Email & Campaigns — bring your own SMTP, subscriber lists, broadcasts
  • Templates — starter packs for common Indonesian business types
  • Local auth — register/login, first user becomes admin

Full step-by-step installation, configuration, updating, backup, and troubleshooting: see INSTALL.md. The quick starts below get you running fastest.

Requirements

  • Node.js ≥ 22
  • PostgreSQL ≥ 14
  • Redis (for background email/campaign jobs)

Quick start (Docker)

export JWT_SECRET="$(openssl rand -hex 32)"   # or set it in a .env file
docker compose up -d --build                  # Postgres + Redis + API

The container applies database migrations automatically on startup. The API is then on http://localhost:3002. Create the first (admin) account:

curl -X POST http://localhost:3002/api/v1/auth/register \
  -H 'Content-Type: application/json' \
  -d '{"email":"you@example.com","password":"a-strong-password","name":"You"}'

Quick start (local)

npm install
cp .env.example .env            # set DATABASE_URL, REDIS_URL, JWT_SECRET
npm run db:generate             # (only if you changed the schema)
npx tsx src/db/migrate.ts       # apply migrations
npm run dev                     # http://localhost:3002

Configuration

All configuration is via environment variables — see .env.example.

Variable Required Description
DATABASE_URL yes PostgreSQL connection string
REDIS_URL yes Redis connection string (BullMQ)
JWT_SECRET yes ≥16 chars; signs the login token
DEFAULT_TENANT_ID no Workspace id (single-tenant); default default
CORS_ORIGINS no Comma-separated allowed web origins
PORT no HTTP port; default 3002

API

  • POST /api/v1/auth/register — create an account (first user is admin)
  • POST /api/v1/auth/login — obtain a JWT (also set as an httpOnly cookie)
  • GET /api/v1/auth/me — current user
  • GET /api/v1/contacts, /leads, /opportunities, /pipeline, /activities, /invoices, /quotations, /emails, /campaigns, /subscribers, /templates, /tags, /client-locations, /dashboard

Full generated spec: GET /api/v1/docs.

What's NOT in the Community Edition

By design, the following are Cloud-edition features and live outside this repo:

  • WhatsApp messaging (Kinexa Nidaa gateway)
  • AI assistant / auto-reply / lead scoring (Kinexa Liqaa)
  • Multi-tenant workspaces & billing
  • Managed hosting, backups, and support

Contributing

See CONTRIBUTING.md.

License

Copyright © 2026 PT Kinetikum. Licensed under the GNU Affero General Public License v3.0. See LICENSE.