NNeoCRM
Security & trust

Engineered to be trusted with your data

A NestJS API backend, continuous static audits, and a schema-first discipline mean the platform is verified on every push — not just at launch.

JWT + 2FA authentication

15-minute access tokens, rotating 30-day refresh tokens stored only as a SHA-256 hash, and TOTP-based two-step login — reusing a stolen refresh token revokes the entire token family.

Runtime authorization

Role, module, permission, and feature checks are evaluated on every request — missing tenant context fails closed, not open.

Isolated tenant schemas

Each tenant's data lives in its own database schema, continuously audited against a committed baseline for drift.

Built for uptime

Separate API and worker runtimes, liveness/readiness probes, and load-shedding that protects live users during traffic spikes and deploys.

What happens to every request

Four checks, in order, before any tenant data is touched.

Request comes in

Every API call arrives at a stateless request node.

JWT + TOTP 2FA

Short-lived access token verified; refresh tokens rotate on use.

Runtime authorization

Role, module, permission & feature checks — fails closed if tenant context is missing.

Isolated tenant schema

Query runs against that tenant's own schema, continuously audited for drift.

How it holds up in practice

Fail-closed authorization

If a tenant user's identity can't be resolved, the request is denied — not silently allowed. Elevated internal access is granted explicitly, never by accident.

Session revocation on demand

Deactivating a user or resetting a password immediately increments that user's session version and revokes every outstanding refresh token.

Continuous schema audits

Every tenant schema is checked against a committed baseline. Drift is reported automatically, and repair is a single reviewed operation — never an ad hoc fix in production.

Load-aware request shedding

API nodes report pool saturation and in-flight request load to the balancer, and fail fast under overload instead of letting requests queue and time out.

Rate-limited auth endpoints

Login, refresh, and forgot-password are capped at 5 requests per minute per client via Redis-backed throttling — brute-forcing credentials isn't a quiet background process here.

Engineering, by the numbers

Not claims — numbers pulled straight from the CI pipeline that runs on every single change.

946

Automated tests

902 backend + 44 frontend test cases run in CI before any change ships — not counting the 9 dedicated access-control suites run separately.

8

CI gates on every push

Dependency audit, lint, typecheck, unit tests, build, and static schema audits all have to pass — nothing merges on a red pipeline.

1,500

Line budget per file

Any new component over 1,500 lines fails the build automatically — a code-health rule enforced by CI, not a style guide nobody reads.

2x

Schema applied per CI run

The full database schema baseline is applied to a fresh Postgres instance twice in a row on every run, specifically to prove every migration is idempotent.

See it running with your own data

Tell us your work email and we'll walk you through the modules that fit your business — no generic demo, no pressure to buy.

  • No credit card
  • Live in days
  • No obligation
Chat with us on WhatsApp
Start your free walkthrough