Portfolio

Work that runs the business.

Three projects in depth: the brief we were given, the problem behind it, and what we built — the FleetAnalytix platform rebuild, a custom events CRM and a coworking website.

01

Case studies

Three projects in more depth: the brief we were given, the problem behind it, and what we built.

Case study

FleetAnalytix 2.0

Platform rebuild, cloud operations and engineering management for FleetLogix

Mission

Move FleetLogix's day-to-day operations system onto a modern stack without stopping the business, then keep it fast, observable and economical to run as the volume of work and years of history keep growing.

Problem

The first FleetAnalytix platform had served FleetLogix for a decade and was rebuilt on a new stack through 2023 and 2024. Production scale then brought the next set of challenges: a database that struggled under peak load, dashboards that lagged when the scan queue backed up, releases that interrupted service, and little visibility into where time was going when a request was slow.

Solution

arroWebs took the platform in hand end to end: we own the architecture, review every change and run the cloud estate. Over 2025 and 2026 we re-architected the database tier, archived years of history, introduced a zero-downtime release pipeline and wired monitoring and tracing through every service. Feature work never stopped.

What the platform does

FleetLogix crews service rental-car fleets on site, and every piece of work starts as a scan on the FleetAnalytix mobile app: a badge, a vehicle, an activity. Scans flow through message queues into the platform, where duplicates and exceptions are reconciled before they count. The web portal turns that stream into dashboards at company, brand and site level, management screens for sites, employees and vehicles, scheduled reports, and a per-vehicle history that shows what happened to any car, scan by scan.

  • A set of Node.js microservices behind a gateway, an Angular front end and a companion mobile app
  • A large API surface over a shared multi-tenant data model, documented per service
  • Scheduled jobs that build the summary data the dashboards read from

Built to run at scale

The platform runs on a clustered database with separate writer and reader nodes, so read traffic goes to replicas while the few read-after-write paths stay on the writer. A caching layer sits in front of the hottest lookups and the heaviest dashboard queries, with a fallback to the database, and older records move into yearly archives and object storage so the live tables stay lean. Releases go through a pipeline that builds a tested artifact, pushes static assets to a CDN and rolls the services over gracefully, with configuration and secrets held in a managed store so one build serves every environment. Distributed tracing, structured logs, alarms and runbooks give a view inside production when something needs attention.

  • Clustered database with read replicas, sized from live metrics
  • Caching on the hot paths, with fallback to the database
  • Yearly archives and rolling retention on high-volume tables
  • Artifact-based deployments with a validation gate and zero-downtime rollovers
  • Centralised configuration and secrets
  • End-to-end tracing, structured logging, alarms and runbooks
  • Reviewed pull requests, staging promotion and automated data imports
  • Cloud cost and capacity planning, ongoing feature work and production support
Aerial view of a rental-car lot with thousands of parked vehicles in numbered rows

Sound familiar?

Transitioning a legacy system to a modern stack, without stopping the business that runs on it? That is what we did for FleetAnalytix. Get in touch and we'll talk through how we would approach yours.

Contact us

Case study

Events CRM

Custom CRM for Expotrade

Mission

Build a CRM shaped around Expotrade's event-management business, with the reporting and analytics that off-the-shelf systems could not provide, then keep it current as the business and the technology move on.

Problem

Expotrade's way of handling accounts, contacts, campaigns and sales targets did not map onto packaged CRM products, and the volume of data and depth of reporting ruled out bending one to fit. A decade on, the custom system they had instead was still doing the job, but its interface and underlying platform were due for renewal.

Solution

arroWebs designed and built Events CRM from the ground up, and has run it since. We moved it to a current PHP release in 2024, and through 2026 we refreshed every screen, added case email threads, AI contact summaries and a renewals pipeline, and put automated checks and deployment around the codebase. The sales team kept working throughout.

Web application

Events CRM is the system Expotrade's sales teams and administrators run their events business on. Accounts and contacts, the campaigns each event edition runs for delegates, sponsors and speakers, and a contact's status in every campaign all live in one place, with tasks, inbound web enquiries and multi-level reporting around them.

  • Lead tracking, contacts and accounts, with merge and de-duplication flows
  • Campaign groups per event edition, with Live, Past and Archived lifecycles
  • Team management, task distribution and weekly sales targets
  • Sales history, financial projections and spreadsheet exports
  • Data analysis and multi-level reporting
Events CRM web application screens

Modern tooling on a mature system

Every list, detail and edit view runs on a modern front-end toolkit over the same data model the team has always worked with. Dashboards are interactive, with a scoreboard view for the office screen, a call list and weekly target meter for each rep, and a team view of call lists and activity for managers. Sign-in is shared across Expotrade's systems and a dedicated search index makes contact and account lookups instant. Case email threads keep a rep's correspondence with a contact in the CRM, replies and attachments included. An on-demand AI summary gives the story of any contact in a few sentences, and the Renewals view surfaces past winners who are in a live campaign so the team knows who to call first. An automated walkthrough exercises every screen as every user role before each release, and deployment to staging and production is automated.

  • Interactive dashboards, a scoreboard view and per-rep call lists and targets
  • Single sign-on and indexed search
  • Case email threads on contacts and campaign contacts, with reply-by-email
  • AI contact summaries on the detail view and in the list preview
  • Renewals pipeline for managers, and a past-winners view for each rep
  • Campaign lifecycle managed at the event level, with bulk archive and exports
  • Automated walkthrough of every module and role, run before each release
  • Versioned schema changes, a changelog and automated deployment

Sound familiar?

Bringing a long-serving system up to a modern interface and tooling, without interrupting the people who use it every day? That is what we did for Events CRM. Get in touch and we'll talk through how we would approach yours.

Contact us

Case study

Private offices, Texas

Website, custom CMS and online leasing for a private-office and coworking operator

Mission

Give a fast-growing private-office operator one website that sells every building it owns, books tours, takes membership applications online, and that its own marketing and leasing teams can keep current without a developer.

Problem

Every property has its own address, photos, video, virtual tour, floor plans, amenities, flyer, booking link and membership options, and all of it changes as suites are let and new buildings open. Marketing wanted to swap banners, promos and offers week to week; leasing wanted applications arriving complete, with ID attached, in the right city's inbox. A general-purpose CMS would have left most of that in free-form page content, and the image library had outgrown what a shared host could serve.

Solution

A custom CMS in which a property is a first-class content type, with everything a prospective member needs on one page; a guided member application that validates, attaches the applicant's ID and routes to the right team; media that is stored once and served from S3; and a staging-to-production pipeline so small changes ship weekly without risk. The engagement is ongoing.

One property type, many buildings

Rather than a page per building, the CMS has a property record with its own fields: address and map coordinates, location highlights, gallery, video, up to four floor plans, on-site and walkable amenities, a downloadable flyer, membership options, virtual tours and the booking link for that city. Each city's listing page and the locations map are generated from those records, so adding a building is a form, not a rebuild.

Around it sit the usual content modules the team edits themselves: pages, menus, widgets, FAQs, blog, press, team profiles, redirects and site settings. The homepage promo band and the membership options on offer are data too, which is how a month-to-month campaign went live without touching code.

  • Pan-and-zoom floor plans, with titles and columns configurable per property
  • Matterport virtual tours and Wistia video, with a placeholder when a building's video is still in production
  • Membership options and a day-pass link to the operator's space-management platform, shown only where offered
  • A GeoJSON feed of properties for the locations map, filtered by city
Three overlapping screens from the website: the homepage, a property page and the Houston locations page with its map

Enquiries, media and releases, handled

Every property page offers a tour booking through the city's calendar, a reserve-a-space enquiry and the full member application: business and contact details, suite and term, rental history, guarantors, disclosures, a signed certification and an uploaded ID checked by file type. Validation keeps what the applicant typed, a progress indicator keeps the length honest, and submissions land in the admin with the attachment, routed to the right city's inbox and exportable to CSV. Galleries run to thousands of images, stored once under content-addressed paths with thumbnails and crops generated for every size the templates use, and offloaded to cloud object storage in batches with the server as fallback until each file is there. Releases flow from the develop branch to staging and from main to production, with the code detecting its environment so one build serves all three, and a documented routine refreshes staging from a production snapshot.

  • Tour booking, reserve-a-space enquiry and a guided member application with ID upload
  • reCAPTCHA on every public form, acknowledgement emails and alerts when mail fails
  • Content-addressed media with generated sizes, offloaded to cloud storage
  • Jobs that compress oversized files and regenerate thumbnails when templates change
  • Automated deployment: develop to staging, main to production
  • Environment detection and a documented database-refresh procedure
  • Ongoing maintenance and feature work on a retainer

Sound familiar?

Running several locations, products or buildings from one website, and tired of every change going through a developer? That is what we solved for this operator. Get in touch and we'll talk through how we would approach yours.

Contact us

Next step

Have a project like one of these?

Book a call