Engineering and operations · Corporate site + dispatch center + Android app
Easy Truck
Site for a 24/7 truck fleet assistance company and the center that dispatches tow trucks, with ops panel and Android app.

- Client
- 24 hour roadside assistance company for truck fleets
- Where
- São Paulo, SP, Brazil
- Technology
- TypeScript · Node.js · Fastify · PostgreSQL · Redis · Next.js · React · React Native · Expo · MapLibre · Google Routes API · PHP · MySQL
- Status
- Live · easytrucksassistance.com.br
- Development
- André Gomes · NexiaLabs
In short
Easy Truck is a 24/7 assistance company for truck fleets, with its center in São Paulo, Brazil. André Gomes, at NexiaLabs, built the corporate site, which presents the technical center, partner manufacturers and provider network and gives access to the panel, and the EasyTruck Center, the system that offers each call to qualified tow operators in a growing radius and tracks the trip to its destination. The system uses a Fastify and PostgreSQL API, a Next.js panel and a React Native Android app.
The client
Easy Truck provides assistance to truck fleets: customer service, mechanical support and towing, backed by a network of approved dealerships and repair shops. When a truck breaks down, the center gets a call from a manufacturer or insurer and has to find a tow truck able to carry that vehicle. This used to happen over the phone, calling providers one by one. Service for the Foton network also produced monthly customer service and emergency reports that arrived as spreadsheets.
The challenge
A heavy truck cannot go with just any tow truck: the vehicle may have locked wheels, be armored, sit in an underground garage or have no key. The system had to filter who can actually do the job, make the offer fast and make sure two operators never accept the same call. Cost had rules too: each call has a kilometer limit, and paid route lookups could not turn into a surprise bill. The center also needed to see in real time where every tow truck is and whether it will be late.
What was built
The corporate site presents the company to fleets, manufacturers and providers and takes operators straight to the panel. André built a single API that holds all business rules, used by the web dashboard, the driver app and the contracting companies' systems. The agent opens a call and answers the triage questions; without them the engine makes no offer. With them, the engine opens rounds with a growing radius and sends the offer to every qualified operator, with no ranking, and acceptance is locked in the database so only one wins. The price is frozen at acceptance using the current cost table, with an included distance and a cap at the kilometer limit, and any excess becomes a pending item for a supervisor. Arrival at pickup and destination is detected by geofence, and a photo checklist unlocks each step.
What the system does
- Corporate site with the 24/7 center, on call channels and a map of the states served.
- Partner manufacturers section explaining that each brand has its own toll free number and all reach the same technical center.
- Access to the center panel straight from the site.
- Call triage covering vehicle category, locked wheels, armor, location and key.
- Capability sheet for each tow vehicle, answered item by item, with nothing checked by default.
- Offers in growing radius rounds to every qualified operator, with the first acceptance taking the call.
- Geofence that records arrival at pickup and destination using server time.
- Photo checklist at pickup and destination that unlocks the next step of the trip.
- Service screen sorted by urgency and a wall display that shows only what needs a decision.
- Signed call intake for contracting companies' systems, reviewed by the center.
- Fleet service protocol with the nearest dealership and the manufacturer's chassis database.
// For whoever reviews the code: architecture and decisions.
Under the hood
The API is written in TypeScript on Fastify 5, with PostgreSQL, versioned migrations and opaque sessions stored in Redis. The dashboard is Next.js 15 with React 19 and MapLibre maps, and calls the API through the /api path on its own domain. The Android app is React Native with Expo, runs a foreground service for presence and offer alarms, and uses the same API. Routing goes through a single module backed by Google's Routes API; reverse geocoding uses Nominatim with IBGE boundary data as fallback. Everything runs on a Hostinger VPS with Nginx and systemd, released by a versioned script that rolls back if the new version does not respond. The Foton reports panel is a separate PHP and MySQL project.
Technical decisions
- Every call to Google goes through one module, and an automated check blocks any other file from using the key, so the provider can change without touching business rules.
- Delay is computed locally against the route fetched at acceptance, with at most three recalculations per trip, to avoid periodic paid lookups.
- Acceptance uses a row lock and a conditional update, because two operators tapping accept in the same second is a real case.
- Stored coordinates never come from Google, so the client's data is not tied to one provider's terms.
Does your business look like this one?
Fits assistance companies, carriers and dispatch centers that send crews or vehicles into the field and need to follow each job to the end.
Frequently asked questions
Who developed Easy Truck?
Easy Truck was developed by André Gomes Andrade, a full stack developer from Carlos Chagas, Minas Gerais, Brazil, at NexiaLabs, from planning to launch.
Where is the client of Easy Truck based?
24 hour roadside assistance company for truck fleets. São Paulo, SP, Brazil.
Which technologies were used to build Easy Truck?
Easy Truck uses TypeScript, Node.js, Fastify, PostgreSQL, Redis, Next.js, React, React Native, Expo, MapLibre, Google Routes API, PHP, and MySQL.
Can you build a similar project for my business?
Yes. Every project is custom built, with code and accounts in the client's name. The first step is a WhatsApp conversation at +55 (33) 98465 6356 to understand what you need.
