Why We Built Xapto Flow — A Modern CRM on Top of Legacy ERP
Most businesses run on legacy ERP systems. They work — they handle invoicing, inventory, and customer records. But the user experience? It's stuck in 2010. Nested menus. Page reloads. Tab-switching between corporates. Our team at Xapable knew this pain firsthand.
We had a PHP-based ERP running 27 companies with 5,201 customers. It was functional. But every time we needed to check a customer, create a task, or switch between corporates, we lost minutes — minutes that added up to hours every week.
The Problem: Legacy UI, Modern Needs
The old ERP required you to navigate through multiple levels of menus just to find a contact. Creating a task meant filling out a form, submitting, and waiting for a page reload. Switching between corporates meant logging out and back in, or clicking through a dropdown and waiting for the entire page to refresh.
We looked at migrating to a modern SaaS CRM. But migration meant moving 5,201 customers, 27 corporates, years of invoice history — and risking data loss or downtime. The cost and risk were too high.
The Solution: API Layer + Modern Frontend
Instead of migrating, we built a REST API layer on top of the existing MySQL database. This API exposes contacts, tasks, invoices, leads, and quotations as JSON endpoints — secured with per-corporate Bearer tokens.
Then we built Xapto Flow — a Next.js frontend that consumes those APIs. The result: a modern, responsive dashboard that reads and writes to the same database the legacy ERP uses. Zero migration. Zero downtime.
What Xapto Flow Does Today
• Dashboard: Real-time stats — customers, tasks, corporates at a glance.
• Contacts: Search, create, edit, delete — instant, no page reloads.
• Tasks: Status filters, CRUD operations, date tracking.
• Company Switcher: Dropdown in the sidebar — switch corporates in one click.
• Google Sign-In: Secure authentication via Firebase. No password management.
Why Next.js + Tailwind
We chose Next.js for its React Server Components, file-based routing, and API routes that let us build a BFF (Backend-for-Frontend) proxy. Tailwind CSS gave us a utility-first design system that's fast to iterate on. TypeScript caught bugs before they reached production.
The Result
Xapto Flow went from concept to working dashboard in a single session. It connects to the existing ERP, respects per-corporate security, and provides a modern UI that feels native. And the legacy ERP? It keeps running. No migration. No risk.