Custom CRM Development from Scratch for TristateNDT

Custom CRM Development from Scratch for TristateNDT

CRM / ERP Systems
NDTmanager CRM — main dashboard with widgets

Client

About the client

TristateNDT is a New York-based company (USA) specializing in non-destructive testing of heat exchanger tubes. TristateNDT engineers travel to client sites and use proprietary equipment to test tubes with a range of methods: Eddy Current, IRIS, RFT and others. The company's own testing devices are integrated with the CRM via API — measurements are pulled into reports automatically, without manual data entry.

Case screen №1 – Custom CRM Development from Scratch for TristateNDT

Goals and Tasks

Goals

1. Move the business from Excel to a real CRM. Before development, the TristateNDT team tracked every visit, order and payment in Excel sheets. No off-the-shelf SaaS covered the NDT industry — a custom system tailored to the specifics of non-destructive tube testing was required.

2. Drag-and-drop dispatch calendar with real-time updates. Interactive technician scheduling with an Unassigned Pool, Pending → Scheduled → Confirmed → Dispatched statuses and WebSocket-based real-time sync across every open manager session.

3. End-to-end sales workflow. Build the full pipeline from preliminary estimate to invoice: Estimate → Quote → Purchase Order → Order → Invoice. No double data entry, with automated conversion between entities.

4. Equipment integration via API. TristateNDT's proprietary testing devices must push measurement data into the CRM via a REST API, so results land in the right order sections automatically — no paper-to-screen transcription.

5. NDT specifics from scratch. Cover Eddy Current testing, heat exchanger equipment sections, Eddy Current Tier pricing, the receivables embargo policy, testing equipment units, and technician Time Off with all industry codes.

6. Multi-role system with granular access. Managers, dispatchers, accountants, technicians — each role gets its own set of modules and a UsersActivity log that records every key action across the system.

Result

Result

We delivered a full-fledged industry CRM/ERP system from scratch for TristateNDT — about 35 modules covering everything from the dispatch calendar and customer base to the financial layer with the embargo policy and API integration of testing equipment. The client moved off Excel entirely: all visits, orders, invoices and payments now live in a single system. The UI design was created by the client; Moveiton handled HTML/CSS and full-stack programming of every module per the technical specification.

Team
  • Project Manager
  • Backend Developer
  • Frontend Developer
Technologies
  • PHP
  • CodeIgniter 4
  • MySQL
  • Vue.js
  • Bootstrap
  • HTML
  • CSS
  • JavaScript
  • REST API

Drag-and-drop Dispatch Calendar

The heart of the system is an interactive dispatch calendar with real-time WebSocket updates. The manager sees all technicians as columns and drags visits from the unassigned pool onto the right day and hour — and changes appear instantly in every other open dispatcher session, with no page reload. Statuses flow Pending → Scheduled → Confirmed → Dispatched. Every visit is linked to a technician, an equipment unit and an order — the system blocks any double booking.

Drag-and-drop Dispatch Calendar

Visits Management and Dispatch

A dedicated page lists all scheduled visits with filters by date, technician, status and customer. The Dispatch page on the same level handles dispatching crews to job sites: status changes, equipment linkage, Ready Units checks and the Orders ↔ Visits ↔ Technicians linking logic.

Visits Management and Dispatch

Visit Card Modal

The full visit card lives in a single modal: date and time, assigned technicians, equipment units, the linked Order and the list of equipment sections to test. Editable at any time, with change history retained and automatic schedule recalculation.

Visit Card Modal

Orders

A list of all orders with search, sorting and filters by customer, status and period. Each order has its own set of equipment sections, a linked customer PO, visit schedule and financial status. Long-running orders with multiple visits and staged billing are supported.

Orders

Order Creation Wizard

A multi-step order creation wizard: pick a customer, an address with coordinates, equipment sections with search across existing units, automatic price calculation per Eddy Current Tier rates. All complex NDT pricing logic is baked into the form — the manager fills business fields, the system calculates totals.

Order Creation Wizard

Eddy Current Order Card

A specialized order card for Eddy Current testing. Inside: a list of equipment sections with tube types, quantities and testing configuration. TristateNDT's own testing devices push measurement data into the CRM via API, and results are automatically attached to the matching sections.

Eddy Current Order Card

Quotes

A quotes module with two bundle types: Eddy Current and Non-EC. The manager assembles the quote from equipment sections and units, generates a PDF and emails it to the customer right from the system via sendQuote / sendEmailWithQuote. The quote status is tracked all the way to conversion into an Order.

Quotes

Quote Builder

An interactive quote builder: pick line items from the services catalog (Eddy Current Tier, Other Services), add the customer's equipment sections, manually tune prices and discounts. Totals are computed automatically with currency formatting via v-money.

Quote Builder

Estimates

The first step in the sales pipeline: Estimate — a preliminary work scope and price before drafting a final Quote. Lets the team quickly capture the scope, present a ballpark to the customer and later promote it into a full quote.

Estimates

Invoices and Embargo Policy

Invoices with colour-coded statuses: overdue (red), paid (black), partially paid (yellow). Support for reminders (sendReminder), share links and an automated embargo policy: when payment is more than 90 days overdue, a PO is missing, a holiday hold is active, or the customer is brand-new, the system blocks new work until the debt is cleared.

Invoices and Embargo Policy

Receive Payments

Recording incoming payments from customers with linkage to specific invoices. Partial payments, multi-invoice payments and various methods (check, ACH, card) are supported. Each payment reduces receivables and lifts the embargo per the rules.

Receive Payments

Bank Deposits and Reconciliation

Bank deposit management: group received payments into batches and record the actual deposit into the bank account. Lets the team reconcile CRM data with bank statements and keep cash discipline in order.

Bank Deposits and Reconciliation

Customer Purchase Orders

A dedicated module for managing customer POs (Purchase Orders) sent before work starts. The CRM stores the PO number, document file and links it to the order sections. If the PO is missing, the embargo kicks in automatically and new work for that customer is blocked.

Customer Purchase Orders

Customer Base with Financial History

A customer database with full profiles: company, contacts, addresses, embargo status, financial history, all orders and invoices. A separate add-customer screen with validation and duplicate checking. Primary customers are supported (excluded from certain embargo rules).

Customer Base with Financial History

Addresses and Geolocation

A dedicated address book with geocoded coordinates (lat/lng). Every visit hands the technician a precise point — paving the way for future Google Maps directions integration and GPS tracking via MQTT devices.

Addresses and Geolocation

Technicians and Time Off

Technician profiles with contacts, pay rates, skills and links to equipment units. A separate Time Off module with PTO, VAC, SCK, HOL, BEV, JDY, PPL, BTO, UTO codes — vacations and absences automatically block calendar slots.

Technicians and Time Off

Equipment Units and API Integration

The TristateNDT testing equipment catalog (units), linked to technicians and orders. The crucial part: every device is integrated with the CRM via a REST API — field measurement data lands in the right order section automatically, without manual transcription. This is the key integration that removed the errors of copying numbers from paper.

Equipment Units and API Integration

Services Catalog and Pricing

Service catalog setup: Eddy Current Tier rates (differentiated by complexity and tube type) and Other Services. Quotes and invoices pull prices from this catalog — change a rate in one place and it propagates everywhere.

Services Catalog and Pricing

Reports and 7-Widget Dashboard

Business reporting: Travel report per technician (mileage, drive time), annual revenue analysis, customer receivables. The dashboard shows 7 widgets: Invoice Summary, Income, Job Confirmation, Top-10 Customers, Income by Method, Year-on-Year, User Activities.

Reports and 7-Widget Dashboard

Multi-Role System and Activity Log

A multi-role system: managers, dispatchers, accountants, technicians. Each role sees its own set of modules. A dedicated UsersActivity log records every action — who created an order, who changed an invoice status, who recorded a payment. User profile with notification and access settings.

Multi-Role System and Activity Log

All key CRM screens

the end.

That's all, but we'd be happy to work on your project!

Telegram
Write us on Telegram We reply within 5 min