ERP System Featured

EKT Workspace ERP

The largest system we have built: a full ERP for a manufacturer and trader — inventory, sales and CRM, purchasing, made-to-measure production, field service, POS, treasury, accounting, HR and payroll across 13 domains and 149 screens, with an AI copilot on every page.

EKT Workspace ERP

About this project

EKT Workspace is a Laravel ERP built around one company's real operation rather than a generic accounting template: raw material imported by sea, made-to-measure gaskets, belts and heater plates fabricated to order, sold locally to VAT and non-VAT customers, in more than one currency, with the accounting that the country's law actually requires. It runs the business end to end, and it is the biggest thing in this portfolio — 1,090 routes, 187 models, 154 services, 623 screens' worth of Blade, 252 migrations, and 1,823 feature tests to keep it honest.

Thirteen domains, each a hub card and a contextual sidebar:

• Inventory — a workbench that opens on every pending warehouse signal (below minimum, out of stock, negative or zero cost, draft adjustments, transfers in transit, open stock takes, expired reservations, slow movers, remnants to reuse), items with images, barcodes, UoM conversions and per-customer item codes, warehouses down to bin locations, movements, transfers, relocations, reservations, stock takes and reports.
• Sales & CRM — leads, a pipeline board and follow-ups; quotation requests, quotations, sales orders, delivery notes, invoices and credit notes, each stage flowing into the next through one posting engine.
• Smart pricing — a price estimator for made-to-measure work: templates, a cost ladder, an AI half that interprets the request and states its assumptions, and a learning loop where the produced job's actual cost lands back on the estimate and calibrates the template.
• Inventory intelligence — sales velocity, days of cover, lead-time-aware reorder points, ABC classes and suggested order quantities. It never posts and never moves stock; it tells a human what to buy, and can draft one purchase order per supplier when that human says so.
• Procurement — suppliers, purchase orders, goods receipts, purchase invoices and import shipments with landed cost.
• Manufacturing — one production engine, the work order, covering both standard BOM assemblies and made-to-measure items whose material quantities are computed from stored dimensions through template BOMs; leftover strip and roll lengths return to stock as remnants with their real length and value. Plus machines, a drag-to-reschedule production schedule and production reports.
• Field service — inbound requests with SLA clocks, dispatchable jobs on a technician board, on-site execution with signature, billing through the ordinary sales cycle, and maintenance contracts with entitlements, periodic billing, deferred-revenue recognition and auto-generated preventive maintenance. Job types, checklists, SLA policies and technician profiles are data, not code.
• Finance — treasury (customer receipts and refunds, supplier payments, bank accounts, post-dated cheques, collections, cash-flow forecast, POS card settlement) and full double-entry accounting: chart of accounts, journal entries and templates, daily book, control ledger, recurring journals, fixed assets, bank reconciliation, month-end close, trial balance, balance sheet.
• HR & payroll — employees, attendance, leaves, a component-based salary structure, mid-month adjustments, payroll with itemised payslips, ledger-booked salary advances, and statutory and end-of-service handling.
• Point of Sale, Loyalty, Warranty and Approvals — optional modules, each behind a master switch and inert while off: a register with sessions and cash counts; a customer points wallet earned on cash actually paid and redeemable as an invoice discount; a two-directional warranty platform on a serial registry; and a governance layer that approves the document itself rather than a side ticket.
• Analytics — an owner dashboard, sales analytics (top sellers, by customer, by item, by salesperson, ABC, margin) and purchase analytics (by supplier, by item, price history, supplier performance).
• Communication — a WhatsApp inbox and Gmail integration inside the ERP.

An AI copilot sits in the footer of every authenticated page. It opens a drawer holding exactly the domain consoles the signed-in user may actually use — module enabled, provider key present, route permission — and the current page decides the default agent. Each console carries the page's own context ("the user is viewing sales invoice INV-2026-00012, status posted"), which is passed to the model as an explicitly untrusted hint: every identifier is still resolved and permission-checked on the server, so a forged context can never widen access. The consoles draft, they do not post.

The system is multi-company by construction: one codebase, one instance per company, one control panel. A company goes from a form to a live, tradeable ERP in about twenty seconds — provisioning, seeding, release publishing with per-tag preview and release notes, health history with uptime strips, per-company backups and an audit log. Localisation is data, not a fork: base currency per company (QAR, USD, EUR, LBP), VAT switched on or off system-wide, Lebanese and Qatari statutory defaults, and bilingual English/Arabic PDFs with proper Arabic shaping.

Quality is enforced by machine. Beyond the 1,823 feature tests there is a Playwright rig that screenshots 119 routes on desktop and mobile and fails on any uncaught JS error, an axe-core accessibility pass, a Lighthouse performance budget, and a theme linter that ratchets against front-end drift. Security decisions are written down and tested: one shared guard for every outbound call on a user-supplied address, HMAC-verified webhooks, sensitive documents served from a private disk through authorised routes, a token-gated health endpoint, and an audit log on every critical model.

Screenshots

Want something like this?

Book your hours and we build it — after a free confirmation call.

Book your hours
Back to all projects