# NextCRM

MIT Next.js CRM with projects, invoicing, documents and a built-in 127-tool MCP server.

Accounts, contacts, leads, opportunities, contracts, activities, projects, invoices, documents and an email client in one Next.js 16 app on PostgreSQL. The MCP server is built in at /api/mcp/mcp with Bearer tokens generated from your profile; enrichment runs a Claude-driven browser agent in an E2B sandbox. Single-maintainer project with a Docker Compose stack.

Alternative to: HubSpot, Pipedrive

- Capabilities: adaptable, operable
- Vertical: smb-ops-crm
- Shape: business-app
- Form factor: web-app
- Execution model: hybrid
- Provenance: unknown (recorded, never ranked)
- Repo: https://github.com/pdovhomilja/nextcrm-app (MIT), 688 stars, last commit 2026-09-02
- Last activity: 2026-09-02
- Page: apps/pdovhomilja--nextcrm-app.html
- JSON: apps/pdovhomilja--nextcrm-app.json

## Use it when

- I want one app for CRM, projects and invoices that our agent can drive through MCP, and I am fine with a small project
- I want a permissive-license CRM I can rebrand for a client

## Gotchas

- Login is passwordless email OTP: without an email provider you read the code from the database
- Roadmap still lists 'fix all TypeScript any types' and testing expansion; single maintainer
- Invoices are not reachable over MCP yet
- Bundled Postgres and MinIO ship with placeholder passwords

## Editions

- Free: Free, open source
  - source: https://github.com/pdovhomilja/nextcrm-app
  - container: cp .env.docker .env && docker compose up -d
  - hosted: https://demo.nextcrm.io

## Adaptable: make it yours

Effort: config-only (24 things to edit)

Copy .env.docker to .env, set ADMIN_EMAIL and RESEND_API_KEY (login is email OTP), and strong POSTGRES_PASSWORD and MINIO_ROOT_PASSWORD. Model and enrichment keys follow a three-tier rule, ENV then admin panel then user profile, so the app runs with none in .env and admins can add OpenAI, Anthropic, Groq and Firecrawl keys at /admin/llm-keys. Tax rates, invoice series and currencies are admin settings. Rebranding means editing the Next.js UI.

- Env vars: DATABASE_URL, BETTER_AUTH_SECRET, BETTER_AUTH_URL, ADMIN_EMAIL, RESEND_API_KEY, RESEND_FROM_EMAIL, SMTP_HOST, SMTP_USER, SMTP_PASSWORD, MINIO_ENDPOINT, MINIO_ACCESS_KEY, MINIO_SECRET_KEY, MINIO_BUCKET, OPENAI_API_KEY, FIRECRAWL_API_KEY, GOOGLE_ID, GOOGLE_SECRET, GOOGLE_CALENDAR_CLIENT_ID, EMAIL_ENCRYPTION_KEY, CRON_SECRET, MAILTRAP_API_KEY
- Config files: .env.example, .env.docker, docker-compose.yml
- Prompt files: none
- Accounts you'll need: Resend or SMTP (required for OTP login); OpenAI (optional); E2B and Anthropic (enrichment, optional); Firecrawl (optional); Google Cloud OAuth (optional)

## Operable: what an agent can drive

Operability: official. Interface: mcp at https://github.com/pdovhomilja/nextcrm-app#-mcp-server--ai-agent-access-to-crm-data-new (published by the builder, local).

### Reach (partial coverage)

- Manage accounts, contacts, leads and opportunities: reachable. README MCP table: 6 tools each (list, get, search, create, update, delete)
- Log activities (notes, calls, meetings, tasks): reachable. Activities module: 5 tools
- Manage projects, boards and tasks: reachable. Projects module: 18 tools
- Store and link documents: reachable. Documents module: 8 tools incl. upload, download, link
- Run email campaigns: reachable. Campaigns module: 18 tools (CRUD, send, pause, templates, stats)
- Enrich targets and contacts: reachable. Enrichment module: 4 tools; needs E2B and model keys
- Run reports: reachable. Reports module: list, run
- Create and send invoices: not reachable. Invoices module is not among the 15 MCP modules; it uses server actions and /api/invoices/[id]/pdf
- Read and send email from the built-in client: not reachable. Email Accounts module exposes list only
- Manage users, roles and LLM keys: not reachable. Admin panel pages (/admin/llm-keys, /admin/invoices); no MCP tools

## Code stack

- Languages: TypeScript
- Frameworks: Next.js 16, React 19, Prisma 7, shadcn/ui, Tailwind CSS v4, Inngest, Better Auth, next-intl
- Package manager: pnpm
- Database: PostgreSQL 17 with pgvector, MinIO/S3
- Hosting target: Docker Compose, Coolify, Portainer, Vercel

## Model stack

- Providers: OpenAI, Anthropic, Groq, E2B, Firecrawl
- Models: Claude Sonnet 4.6 (enrichment)
- Keys you need (names only): OPENAI_API_KEY, FIRECRAWL_API_KEY, E2B_API_KEY, ANTHROPIC_API_KEY
- Prompts live in: none
- Tools: accounts (6), contacts (6), leads (6), opportunities (6), targets (6), products (5), contracts (5), activities (5), documents (8), target lists (7), enrichment (4), email accounts (1), campaigns (18), projects (18), reports (2)

## Skills

bundled: A single published SKILL.md teaching an agent to use the app's MCP server against CRM data.
- Paths: public/SKILL.md

## Evidence and confidence

- formFactor: README: Next.js 16 app, Docker Compose (confidence 0.95)
- executionModel: README: E2B sandboxed Claude agent for enrichment, pgvector embeddings from OpenAI; CRM core deterministic (confidence 0.9)
- operability: README MCP Server section: 127 tools across 15 modules, /api/mcp/mcp streamable HTTP, Bearer tokens (confidence 0.9)
- effort: README Docker Installation: .env.docker lists every variable; 3-tier key system (confidence 0.9)
- editions: README License: MIT; no paid edition (confidence 0.9)
- active: GitHub pushedAt 2026-09-02
- reach:  (confidence 0.9)

## Open questions

- Roadmap line 10 says 25 MCP tools while the feature section says 127; which is current?
- Is the codebase vibe-coded? AGENTS.md exists but no statement

## Sources

- https://github.com/pdovhomilja/nextcrm-app (sourcing:smb-ops-crm:community)
- https://demo.nextcrm.io (sourcing:smb-ops-crm:community)
