Overview

Neo CRM is a lead and pipeline management CRM: search and filtering over leads, configurable pipelines and stages, follow-up scheduling, notes, and a full activity timeline for every change made to a lead. The backend is a Laravel API; the web app is a Vue 3 + TypeScript + Vite single-page app talking to it over a versioned /api/v1 HTTP API.

This documentation describes the product's own development environment and architecture. Neo CRM is in active development and not yet publicly available — see the product page for status.

Stack

LayerTechnology
BackendLaravel API
Web frontendVue 3, TypeScript, Vite
Mobile appReact Native (Expo, managed workflow), TypeScript
APIVersioned /api/v1 HTTP API
Local devDocker for both backend and frontend

Backend static analysis and formatting run via Composer scripts (composer analyse, ./vendor/bin/pint --test); the frontend lints with ESLint and checks formatting with Prettier. Both apps' tests, static analysis and lint/format checks run automatically in CI on every push/PR.

Roles & Access

Access is role-scoped across five roles:

  • Owner / Admin — organization-wide access, lead reassignment, pipeline management
  • Manager — organization-wide visibility, can reassign leads
  • Sales Agent — scoped to their own assigned leads by default
  • Viewer — read-only; excluded as an eligible assignment or reassignment target

Notifications go out across in-app, email and push channels, with a per-event-type × per-channel preferences grid so a user can turn off, say, email notifications for one event type without affecting others.

Mobile App

The mobile companion (leadflow-mobile) is a React Native / Expo app implemented spec-by-spec against the same backend. As of this snapshot:

  • Phase M1 (Foundation) — navigation, typed API client, state management, themed design system, dev tooling/CI — complete
  • Phase M2 (Auth) — complete, including biometric App Lock
  • Phase M3 (Dashboard) — complete
  • Phase M4 (Leads) — complete: list, detail, edit, activity timeline, notes, reassignment, pipeline stage changes, one-tap call/SMS/email actions
  • Phase M5 (Follow-ups, notifications, offline) — core follow-up workflow, push notifications, and offline mode (cached data, a queued-write sync with conflict detection, and local due-date reminders) are built

Crash reporting is wired up via Sentry, gated on a DSN being configured (none is provisioned in this snapshot, so it no-ops safely). No usage-analytics SDK is included by design — the mobile spec deliberately limits telemetry to crash visibility given the PII a CRM handles.

Local Setup

Backend (served at http://localhost:8094, health check at /up):

cp .env.example .env
docker compose up -d --build
docker compose exec laravel.test php artisan migrate

Web frontend:

docker compose run --rm node npm install
docker compose run --rm node npm run dev

Mobile app:

cp .env.example .env
npm install
npx expo start

No local PHP/Composer/Node/MySQL/Redis installation is required for the backend or web frontend — everything runs in Docker. The mobile app needs Node ≥ 20 and, for a real device build, Xcode (iOS) or Android Studio (Android); Expo Go works for most flows without either.

Status & Roadmap

The web app's foundational CRM workflow (leads, pipelines, follow-ups, notifications) is built and under active development. The mobile app has completed its foundation, auth, dashboard, and full lead-management phases, with follow-ups, notifications and offline support also built. Remaining mobile work includes app-store release preparation (EAS build configuration, real push-notification project IDs, and privacy-policy updates). Neither the web app nor the mobile app is publicly launched yet — see the product page, or contact us to be notified at launch.

Have a technical question?

Reach out and we'll answer directly, or update this page.