finds.dev← search

// the find

pdovhomilja/nextcrm-app

★ 639 · TypeScript · MIT · updated Jun 2026

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.

A self-hostable CRM covering contacts, leads, opportunities, invoicing, project management, and a built-in email client — all on Next.js 16 with PostgreSQL and pgvector. The headline feature is an MCP server exposing 127 tools across 15 modules so AI agents can read and write CRM data directly. Aimed at teams who want a Salesforce-shaped thing they actually own.

The E2B enrichment agent is the most interesting part: it spins a real Chrome browser in a cloud sandbox and runs a Claude Sonnet tool-use loop to research companies and discover C-level contacts from JS-heavy sites that a plain HTTP scrape would miss. The MCP server is well-built — Bearer tokens are SHA-256 hashed (raw value shown once, never stored), supports both streamable HTTP and legacy SSE transports, and the 3-tier API key fallback (ENV → admin panel → user profile) means you can stand up the app and configure keys later without touching environment files. The Docker Compose bundle is genuinely convenient for self-hosting: PostgreSQL with pgvector, MinIO, and Inngest all bundled, migrations run on start, and no manual bucket or schema setup. Field-level audit logging with soft delete and a `diffObjects` diff engine is solid — most CRM open-source projects skip this entirely.

The README openly lists 'Fix all TypeScript any types' as an ongoing roadmap item, which means the codebase has accumulated type-unsafe paths in what is otherwise a TypeScript-first stack — you will find them when things break at runtime. Documentation is 'available soon' at a domain that currently serves nothing, so onboarding beyond the README is all forum archaeology and reading source. The operational dependency stack is heavy: Inngest for background jobs, E2B for enrichment sandboxes, UploadThing for file storage, OpenAI for embeddings, Anthropic for the agent — costs compound and any of these going down silently degrades features in ways users will notice but logs may not surface clearly. The passwordless-only login (email OTP via Better Auth) is a self-hosting friction point: without a configured email provider you have to read OTP codes directly from the database, and there is no password fallback for emergency access.

View on GitHub → Homepage ↗

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →