
Operations ERP Suite
The full ERP spine: orders, CRM, production, stock, purchasing, projects, finance, approvals, reporting, people and automation.
Next.js · TypeScript · PostgreSQL · Recharts
Support deskManager1 / 12
Almost every delivery complaint is a shipment problem wearing a customer’s name. Link the case to the consignment and one fix closes both, instead of an agent and a depot working the same failure from opposite ends.
Next.js · TypeScript · PostgreSQL · Auth.js
Inside the app
24 connected functions on one schema, spanning two sides of the same relationship. Everything below is in the template before a line of customisation.
Status, priority, category, channel, SLA state, agent and queue, all filterable together. Sorted by how far past the clock a case is rather than when it arrived, because a case that breached an hour ago is still recoverable and one that breached last week is not.
A case carries the consignment that caused it. Open the shipment and every case against it is listed; open the case and the route, the proof of delivery and the exception are already there.
First response and resolution run per tier, and stop while a case waits on the customer. Time spent waiting on them is not counted against you, which is the only way the number means anything.
Damaged, delayed, failed, returned and disputed, with the reason and the cases attached. Most of the queue traces back to a handful of consignments, and this is where you see that.
Photograph, signature and the GPS point, against the delivery address. A disputed delivery is decided on that comparison, so it is held here rather than only in the carrier’s system.
Tier, preferred channel, open cases and shipments in flight on one row. A VIP with three open cases and six consignments moving is the account about to escalate.
Customer-facing answers and internal guidance in one library, kept apart by audience. Internal articles never reach the portal and never land in a reply, and that is enforced rather than left to whoever is typing.
Canned replies per category, inserted into the thread rather than pasted over it. Usage counts are visible, so a macro nobody applies is obvious.
Volume by day, channel and category; satisfaction by rating; agent load against resolution; and the exception detail behind it. The unassigned row is included, because it usually breaches more than any individual.
Front line, claims, escalations and carrier liaison, with the rule that feeds each. When a queue is empty and the cases it should hold are elsewhere, the rule is wrong and the numbers say so.
Help centre, one screen to raise a case, and tracking by reference. No account required, and the SLA clock is shown to the customer rather than hidden behind an apology.
Agent, support manager, operations, administrator and customer. Operations see shipments without the queue; the customer sees their own case and nothing else.
Permissions
Operations get the shipments without the queue, and administrators get the routing rules without the cases. The customer side is a real part of the application rather than a contact form: it shows the same SLA clock the agent sees, including when it has already been missed.
The build
24 functions, all of them live in the preview. Nothing on this list is a mockup or a roadmap item.
What you get
Finance and operations teams whose purchasing runs on email approvals and a shared drive.
Access and evidence
A support desk holds what customers told you when something went wrong, which is why who can read a case and what leaves the building are structural here rather than a checklist someone signs at year end.
Related

The full ERP spine: orders, CRM, production, stock, purchasing, projects, finance, approvals, reporting, people and automation.
Next.js · TypeScript · PostgreSQL · Recharts

Catalogue, stock, warehouses, purchase orders, suppliers, sales, cycle counts and valuation, on one append-only movement ledger.
Next.js · TypeScript · PostgreSQL · Tailwind

A full order management system: orders, customers, catalogue, stock, warehouses, shipping, returns, automation rules and integrations.
Next.js · TypeScript · PostgreSQL · Tailwind
Questions
Yes. The repository, application code, database schema, migrations, seed data and deployment configuration, is transferred to your organisation on delivery. There is no licence key and nothing that calls home.
As many as you like, on both sides. Pricing is per application, not per user, so every agent and every customer account exists at no extra cost.
In settings, by a support manager, without a developer. A policy pairs a customer tier with a first-response and a resolution target, and the same screen decides which queue a category routes to. Changes apply to new cases, so anything already open keeps the target it was raised under.
Their own case and nothing else, and they never have to sign in. A reference number opens the status, the conversation and the SLA clock, including when we have already missed it. They cannot see other customers, your queue, your agents, or any private note left on their own case.
That is the usual route. A fitted build adjusts categories, queues, SLA policies, the macro library, carrier integrations and branding, and typically takes one to three weeks from a signed scope.
Hosting only, paid to your own cloud provider, roughly $50 to $200 a month depending on order volume and document storage. There is no recurring fee to us unless you choose managed hosting.
A fitted build adjusts fields, stages, roles and integrations to how your team already works. One scoping call, a fixed price, one to three weeks.
