{
  "version": "2",
  "generatedAt": "2026-11-03T22:49:39.280Z",
  "listing": {
    "slug": "pdovhomilja--nextcrm-app",
    "name": "NextCRM",
    "tagline": "MIT Next.js CRM with projects, invoicing, documents and a built-in 127-tool MCP server.",
    "shortTagline": "MIT Next.js CRM with MCP",
    "description": "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.",
    "capabilities": [
      "adaptable",
      "operable"
    ],
    "vertical": "smb-ops-crm",
    "alternativeTo": [
      "HubSpot",
      "Pipedrive"
    ],
    "shape": "business-app",
    "formFactor": "web-app",
    "executionModel": "hybrid",
    "provenance": "unknown",
    "codeStack": {
      "languages": [
        "TypeScript"
      ],
      "frameworks": [
        "Next.js 16",
        "React 19",
        "Prisma 7",
        "shadcn/ui",
        "Tailwind CSS v4",
        "Inngest",
        "Better Auth",
        "next-intl"
      ],
      "packageManager": "pnpm",
      "database": [
        "PostgreSQL 17 with pgvector",
        "MinIO/S3"
      ],
      "hostingTarget": [
        "Docker Compose",
        "Coolify",
        "Portainer",
        "Vercel"
      ]
    },
    "modelStack": {
      "providers": [
        "OpenAI",
        "Anthropic",
        "Groq",
        "E2B",
        "Firecrawl"
      ],
      "models": [
        "Claude Sonnet 4.6 (enrichment)"
      ],
      "requiredKeys": [
        "OPENAI_API_KEY",
        "FIRECRAWL_API_KEY",
        "E2B_API_KEY",
        "ANTHROPIC_API_KEY"
      ],
      "promptLocations": [],
      "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)"
      ]
    },
    "repos": [
      {
        "url": "https://github.com/pdovhomilja/nextcrm-app",
        "owner": "pdovhomilja",
        "name": "nextcrm-app",
        "license": "MIT",
        "stars": 688,
        "lastCommit": "2026-09-02"
      }
    ],
    "interface": {
      "kind": "mcp",
      "url": "https://github.com/pdovhomilja/nextcrm-app#-mcp-server--ai-agent-access-to-crm-data-new",
      "official": true,
      "hosted": "local"
    },
    "operability": "official",
    "recommendedWrapper": null,
    "reach": [
      {
        "job": "Manage accounts, contacts, leads and opportunities",
        "reachable": true,
        "evidence": "README MCP table: 6 tools each (list, get, search, create, update, delete)"
      },
      {
        "job": "Log activities (notes, calls, meetings, tasks)",
        "reachable": true,
        "evidence": "Activities module: 5 tools"
      },
      {
        "job": "Manage projects, boards and tasks",
        "reachable": true,
        "evidence": "Projects module: 18 tools"
      },
      {
        "job": "Store and link documents",
        "reachable": true,
        "evidence": "Documents module: 8 tools incl. upload, download, link"
      },
      {
        "job": "Run email campaigns",
        "reachable": true,
        "evidence": "Campaigns module: 18 tools (CRUD, send, pause, templates, stats)"
      },
      {
        "job": "Enrich targets and contacts",
        "reachable": true,
        "evidence": "Enrichment module: 4 tools; needs E2B and model keys"
      },
      {
        "job": "Run reports",
        "reachable": true,
        "evidence": "Reports module: list, run"
      },
      {
        "job": "Create and send invoices",
        "reachable": false,
        "evidence": "Invoices module is not among the 15 MCP modules; it uses server actions and /api/invoices/[id]/pdf"
      },
      {
        "job": "Read and send email from the built-in client",
        "reachable": false,
        "evidence": "Email Accounts module exposes list only"
      },
      {
        "job": "Manage users, roles and LLM keys",
        "reachable": false,
        "evidence": "Admin panel pages (/admin/llm-keys, /admin/invoices); no MCP tools"
      }
    ],
    "editions": [
      {
        "name": "Free",
        "price": null,
        "open": true,
        "distributions": [
          {
            "kind": "source",
            "url": "https://github.com/pdovhomilja/nextcrm-app"
          },
          {
            "kind": "container",
            "url": "https://github.com/pdovhomilja/nextcrm-app#docker-installation-recommended-for-self-hosting",
            "command": "cp .env.docker .env && docker compose up -d"
          },
          {
            "kind": "hosted",
            "url": "https://demo.nextcrm.io"
          }
        ]
      }
    ],
    "skills": {
      "kind": "bundled",
      "paths": [
        "public/SKILL.md"
      ],
      "install": null,
      "note": "A single published SKILL.md teaching an agent to use the app's MCP server against CRM data."
    },
    "customization": {
      "summary": "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.",
      "envVars": [
        "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"
      ],
      "configFiles": [
        ".env.example",
        ".env.docker",
        "docker-compose.yml"
      ],
      "promptFiles": [],
      "effort": "config-only",
      "editCount": 24
    },
    "useWhen": [
      "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"
    ],
    "accounts": [
      "Resend or SMTP (required for OTP login)",
      "OpenAI (optional)",
      "E2B and Anthropic (enrichment, optional)",
      "Firecrawl (optional)",
      "Google Cloud OAuth (optional)"
    ],
    "active": true,
    "lastActivity": "2026-09-02",
    "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"
    ],
    "fit": {
      "adaptable": 3,
      "operable": 3
    },
    "evidence": {
      "formFactor": "README: Next.js 16 app, Docker Compose",
      "executionModel": "README: E2B sandboxed Claude agent for enrichment, pgvector embeddings from OpenAI; CRM core deterministic",
      "operability": "README MCP Server section: 127 tools across 15 modules, /api/mcp/mcp streamable HTTP, Bearer tokens",
      "effort": "README Docker Installation: .env.docker lists every variable; 3-tier key system",
      "editions": "README License: MIT; no paid edition",
      "active": "GitHub pushedAt 2026-09-02"
    },
    "confidence": {
      "formFactor": 0.95,
      "executionModel": 0.9,
      "operability": 0.9,
      "effort": 0.9,
      "reach": 0.9,
      "editions": 0.9
    },
    "openQuestions": [
      "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": [
      {
        "url": "https://github.com/pdovhomilja/nextcrm-app",
        "foundBy": "sourcing:smb-ops-crm:community"
      },
      {
        "url": "https://demo.nextcrm.io",
        "foundBy": "sourcing:smb-ops-crm:community"
      }
    ],
    "research": {
      "stage": "verified",
      "verdict": "unverified",
      "reason": "Both capabilities. MIT, config-only, built-in MCP with broad Reach (invoices excepted). Small project; operable re-derived to 3 on documented tool table.",
      "disputed": []
    },
    "url": "apps/pdovhomilja--nextcrm-app.html",
    "coverage": "partial",
    "paid": false,
    "source": "research/verified/pdovhomilja--nextcrm-app.json"
  }
}
