A large SaaS dashboard used by shipping companies to run shipments, warehouses, delivery agents, finance and customer support, in Arabic and English.

Accurate is a multi-company SaaS platform for shipping and logistics companies. They use it to create and track shipments, manage pickups and warehouses, run delivery agents, handle collections and accounting, and talk with customers.
I've been on the front-end team since 2022 and have authored more than 2,500 commits. I built the in-app conversations module, helped migrate the codebase from JavaScript to TypeScript, redesigned large parts of the dashboard UI, and own much of the printing system, warehouse flows and real-time notifications.
Admins, operations and finance teams who run shipments, warehouses, payments and reports every day.
Receive shipments, update delivery status and chat with the office about each shipment.
Create shipments, track them, request pickups and contact support from their own account.
A full chat module linked to shipments between staff, customers and delivery agents. It has filters, tags, read status, image messages, and a mobile layout with a bottom-sheet drawer.
Helped move the codebase to TypeScript on Vite, with GraphQL Codegen types for queries, so large refactors became safer.
Redesigned layouts, breadcrumb navigation, overview cards and charts, responsive screens, and a system-wide dark mode saved in user preferences.
Live updates over GraphQL subscriptions (Apollo + Pusher), for example when a delivery agent gets reviewed.
Templates for every label size (10×10, 10×15, 16.5×9.5, A4 waybills…) loaded from files, so new layouts ship without a system update.
Warehouse manifests, pickups and receiving flows that streamline how shipments move through the warehouse.
Trial balance, balance sheet, customer and delivery-agent due inquiries, all printable and exportable to Excel.
Automated subscription renewal, expiry alerts and permission-aware access for each tenant company.

Challenge
Staff, customers and delivery agents needed to talk about specific shipments, but messages lived in a tab on each shipment page. They were hard to find, slow to load and awkward on mobile.
Solution
I built a dedicated Conversations page with its own context and routing: a searchable, filterable sidebar with tags, a message panel with skeleton loading and read status, and a mobile drawer / bottom-sheet layout. Each conversation is tied to its shipment, and the GraphQL queries were reworked around conversation IDs, which removed duplicate loading.
Challenge
Hundreds of screens written in JavaScript made refactors risky, and GraphQL responses had no types.
Solution
We migrated module by module to TypeScript on Vite and generated types from the GraphQL schema with Codegen. The app could keep shipping during the migration, and type errors now catch mistakes before they reach production.
I'd love to help you build something great. Tell me what you're working on.
Let's talk