nextcrm-app is a free, open source crm & sales project written in TypeScript and released under MIT. It has 696 GitHub stars, 269 forks and 29 open issues, and was last pushed 7 days ago. On this registry it ranks #9 of 11 tracked projects in CRM & Sales, with 5 head-to-head comparisons available.

What is nextcrm-app?

NextCRM is an open-source, MIT-licensed customer relationship management platform written in TypeScript on Next.js 16, React 19, PostgreSQL with Prisma 7, and shadcn/ui, built for teams that want CRM, project management, invoicing, document storage, and an email client inside one self-hostable application.

What it is

NextCRM is a single web application that combines the everyday records of a sales organisation — Accounts, Contacts, Leads, Opportunities, and Contracts — with adjacent back-office work: project management, invoicing, document storage, an email client, and AI-assisted data enrichment. It lives in the Next.js and React ecosystem, with PostgreSQL and Prisma 7 as the data layer, shadcn/ui for interface components, NextAuth for authentication, Inngest for background jobs, Resend for outbound email, and an E2B cloud sandbox for AI research tasks. It is distributed under the MIT licence and is also offered as a hosted demo for evaluation.

The concrete problem it solves is tool fragmentation, and in one area it names the specific component it replaced. AI enrichment of Targets and Contacts previously ran through a Firecrawl API path; it now runs inside an E2B cloud sandbox — a full Linux environment with a real Chrome browser — which reaches JavaScript-heavy sites, public LinkedIn profiles, and paginated results that a simple API call cannot. Alongside that, the newly added invoice module folds the quoting-to-payment paperwork into the same database as the sales records, and the audit log keeps every field change on every CRM entity.

Key capabilities

  • Full invoicing workflow with four document types — Invoice, Credit Note, Proforma, and Receipt — and a status lifecycle of DRAFT → ISSUED → PAID / PARTIALLY_PAID / CANCELLED, where only drafts stay editable.
  • Invoice series with configurable prefix and suffix produce auto-numbered references such as INV-2026-0001, and server-side PDF export is served at /api/invoices/[id]/pdf.
  • Per-line quantity, unit price, discount percentage, and tax rate feed a tax engine that supports rates such as VAT and GST, with per-line breakdown and summary buckets, plus multi-currency formatting through next-intl.
  • An Activities tab on all five CRM entity detail pages records Notes, Calls, Emails, Meetings, and Tasks, ordered by compound cursor pagination on createdAt + id and linked to several records at once through crm_ActivityLinks.
  • A full audit trail uses the AuditTimeline and AuditEntry components, a diffObjects utility for before/after diffs, soft delete through a deletedAt column, and a global filterable table at /admin/audit-log with restore support.
  • AI enrichment runs an LLM tool-use loop driven by Claude Sonnet 4.6 with the tools browser_open, browser_snapshot, browser_click, browser_extract, and web_search, and can discover C-level contacts from a company name alone.
  • Create and update operations use Next.js server actions with Zod validation rather than an API route middleman, and the product ships with English and Czech translations.

Who uses it and how

  • Sales teams that want accounts, contacts, leads, opportunities, and contracts in one place, with calls and meetings logged against the same records they sell from.
  • Finance-adjacent staff who issue invoices from the CRM itself, recording partial payments, tracking balance due, and emailing documents to the account address through Resend with a React Email template.
  • Administrators who configure tax rates, invoice series, currencies, and default settings centrally under /admin/invoices, rather than editing code.
  • Organisations with European language requirements, since the invoicing and interface strings are translated into both English and Czech.
  • Self-hosting and open-source contributors, evidenced by 269 forks and 696 stars on the repository.

Getting started

The README documents an Installation section for running the application yourself, and the quickest way to evaluate it is the hosted demo at https://demo.nextcrm.io, where sign-in works with a Google account or a newly created user and password.

How it compares

The facts supplied here name no paid products that NextCRM replaces, and no directly comparable projects, so it stands alone in this registry entry. What can be said from the licence and architecture is that the MIT licence places no per-seat cost and no vendor lock on the code, and that running it yourself keeps the CRM records and invoice data inside your own PostgreSQL instance.

When to use it — and when not to

A self-hoster takes on real operational surface: a PostgreSQL database, Resend configuration for invoice email delivery, an E2B sandbox and LLM credentials for enrichment, Inngest for background work, and NextAuth setup for sign-in. Teams without anyone to run that stack should use the hosted demo route or a managed alternative instead. The README excerpt available here is truncated mid-sentence, so parts of the feature documentation cannot be verified from the facts on this page, and with 29 open issues the project is worth checking against your own requirements before committing.

project readme (upstream, from github) — read inline

NextCRM

NextCRM is an open-source CRM built with Next.js 16, React 19, TypeScript, PostgreSQL (Prisma 7), and shadcn/ui. Features CRM, project management, invoicing, document storage, email client, AI-powered features, vector search, and MCP server for AI agent access.

X (formerly Twitter) URL GitHub License

Introduction · What's New · Tech Stack + Features · Roadmap · Installation · Repo activity · License · Discord


Online Demo

You can try it here demo.nextcrm.io, login via Google account or create new user and password.


What's New

🧾 Invoices Module — Full Invoicing Workflow (NEW)

Complete invoicing system built into NextCRM — create, issue, pay, duplicate, and cancel invoices with multi-currency support, tax rates, and PDF generation.

  • Invoice types — Invoice, Credit Note, Proforma, and Receipt
  • Line items — per-line quantity, unit price, discount %, and tax rate with automatic totals calculation
  • Tax engine — configurable tax rates (VAT, GST, etc.) with per-line tax breakdown and VAT summary buckets
  • Invoice series — auto-numbered sequences with configurable prefix/suffix (e.g. INV-2026-0001)
  • Multi-currency — admin-managed currency list with locale-aware formatting via next-intl
  • Status lifecycleDRAFT → ISSUED → PAID / PARTIALLY_PAID / CANCELLED with permission guards (only drafts are editable)
  • Payments — record partial/full payments, auto-computed balance due, payment history on detail page
  • Duplicate & cancel — one-click invoice duplication; cancellation with audit trail
  • Email delivery — send invoices to account email via Resend with React Email template
  • PDF export — server-side PDF generation at /api/invoices/[id]/pdf
  • Activity log — every status change and edit is recorded with actor and timestamp
  • Admin settings — manage tax rates, invoice series, currencies, and default settings from /admin/invoices
  • i18n — full English and Czech translations
  • Server actions — create/update operations use Next.js server actions with Zod validation (no API route middleman)

📋 CRM Activities — Full Activity Tracking (NEW)

All 5 CRM entity detail pages (Accounts, Contacts, Leads, Opportunities, Contracts) now have an Activities tab with a live paginated feed of interactions:

  • Activity types — Notes, Calls, Emails, Meetings, Tasks
  • Create / edit / delete — inline Sheet form on every CRM entity detail page
  • Paginated feed — compound cursor pagination with createdAt + id for stable ordering
  • Linked records — activities attach to multiple entities via crm_ActivityLinks (e.g. a call can reference both a Contact and an Opportunity)
  • Real-time revalidation — server actions revalidate the correct path after every mutation

🕵️ Audit Log & History — Full Change Trail (NEW)

Every CRM entity (Accounts, Contacts, Leads, Opportunities, Contracts) now tracks its full change history:

  • History tab — per-entity timeline of all field changes, shown on every detail page with AuditTimeline + AuditEntry components
  • Soft delete — records are never hard-deleted; deletedAt column preserves data while hiding it from normal queries
  • Admin audit log/admin/audit-log shows a global filterable table of every change across all entities, with restore support for soft-deleted records
  • Diff enginediffObjects utility computes before/after diffs and stores structured JSON in the audit record

🧠 AI Enrichment — E2B Sandboxed Agent + Flexible API Key Management (NEW)

Target and Contact enrichment now runs inside an E2B cloud sandbox — a full Linux environment with a real browser (Chrome) — replacing the previous Firecrawl API path:

  • Real-browser research — the agent navigates JS-heavy sites, LinkedIn public profiles, and paginated results that a simple API call cannot reach
  • LLM tool-use loop — Claude Sonnet 4.6 drives the research with tools: browser_open, browser_snapshot, browser_click, browser_extract, web_search
  • C-level contact discovery — given only a company name, the agent finds all discoverable C-level contacts and creates crm_Target_Contact records automatically
  • Context-aware strategy — agent skips research it doesn't need (e.g. already has a website → skips domain discovery)
  • Confidence scoring — fields below 0.6 confidence are discarded; only empty target fields are overwritten
  • 5-minute timeout per target — partial results are applied even if the agent times out
  • Fan-out — after company enrichment, each discovered contact is enriched independently via a separate Inngest job

API keys are managed through a 3-tier priority system so the app runs without any keys in .env:

ENV variable  →  Admin system-wide  →  User profile
(highest)                              (lowest)
  • Admin panel (/admin/llm-keys) — set system-wide keys for OpenAI, Firecrawl, Anthropic, and Groq. Keys are encrypted at rest (AES-256-GCM).
  • Profile settings (/profile?tab=llms) — users configure their own keys as a fallback.
  • Graceful degradation — enrichment buttons show an informative dialog when no key is available at any tier.

Migration note: The old openAi_keys table is replaced by the new ApiKeys table. Run pnpm prisma migrate deploy to apply the migration.


🤖 MCP Server — AI Agent Access to CRM Data (NEW)

NextCRM now ships with a built-in Model Context Protocol server, letting AI agents (Claude, Cursor, custom agents) read and write CRM data directly.

127 tools across 15 modules:

Module Tools Operations
Accounts 6 list, get, search, create, update, delete
Contacts 6 list, get, search, create, update, delete
Leads 6 list, get, search, create, update, delete
Opportunities 6 list, get, search, create, update, delete
Targets 6 list, get, search, create, update, delete
Products 5 list, get, create, update, delete
Contracts 5 list, get, create, update, delete
Activities 5 list, get, create, update, delete
Documents 8 list, get, create, upload, download, link, unlink, delete
Target Lists 7 list, get, create, update, delete, add members, remove members
Enrichment 4 enrich contact, enrich target, bulk contact, bulk target
Email Accounts 1 list
Campaigns 18 full lifecycle: CRUD, send, pause, resume, templates, steps, stats
Projects 18 boards, sections, tasks, comments, documents, watch
Reports 2 list, run

Authentication: Generate Bearer tokens (nxtc__...) from your profile page. Tokens are SHA-256 hashed — the raw value is shown only once and never stored.

Connect your MCP client (streamable HTTP — recommended):

{
  "mcpServers": {
    "nextcrm": {
      "type": "http",
      "url": "https://your-nextcrm.com/api/mcp/mcp",
      "headers": { "Authorization": "Bearer nxtc__your_token_here" }
    }
  }
}

The server supports both MCP transports defined by mcp-handler:

  • Streamable HTTP at /api/mcp/mcp — single POST endpoint, current MCP spec default
  • SSE (legacy) at /api/mcp/sse — GET stream paired with POSTs to /api/mcp/message (client auto-discovers the message endpoint)

Claude Code Skill: Download the SKILL.md from your Developer profile tab for a ready-to-use Claude Code skill with full tool documentation.


🔍 Vector Search + Semantic Similarity (NEW)

CRM records (Accounts, Contacts, Leads, Opportunities) are automatically embedded using OpenAI text-embedding-3-small via Inngest background jobs.

  • Unified search — combines keyword (full-text) + semantic (pgvector cosine similarity) results in a single grouped UI
  • Find Similar — every CRM detail page has a "Find Similar" button that surf

readme truncated — read the full docs on github

Frequently asked questions

Is nextcrm-app free to use?

nextcrm-app is open source under the MIT licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does nextcrm-app do?

NextCRM — Open-source CRM built with Next.js 16, React 19, PostgreSQL, Prisma 7, and shadcn/ui. CRM, projects, invoicing, documents, email client & AI features.

What is nextcrm-app written in?

nextcrm-app is primarily written in TypeScript. Its source is publicly available at https://github.com/pdovhomilja/nextcrm-app, and it has 696 GitHub stars.