operations · laravel · vue · 2023
Yard care crews, scheduled and documented on site
Eric's Yard Care, Canada
A field service portal for a yard care business: visits scheduled, work logged on site with photo evidence, and a history each customer can see for their own property.
The operation
A Canadian yard care business sending crews out to customer properties for mowing, pruning and cleanup.
The portal schedules and tracks those visits. Employees log the work as they do it, with photographs. Administrators see the whole operation on a calendar and on a map. Customers see the history of what has been done at their own property.
The part that was actually hard
Four kinds of user, seeing four different things. The permission hierarchy runs sysadmin, admin, employee, client, and it governs far more than which pages open. It decides what data each role can see at all: a customer sees only work done at their own locations, an employee sees only their own jobs, an administrator sees everything with filters by customer, employee or location. That is not one setting in one place. Every list, every calendar and every screen has to ask who is looking before it decides what to show, and getting a single one of them wrong shows one customer another customer's property.
A job is a thing with a lifecycle, not a row. An employee starts a visit, which records the time. Photographs go up while they are on site. They finish it, which records the time again. The system knows what is running and what is finished and shows it on one calendar in the business's own local time, which matters more than it sounds when those times are what payroll is calculated from.
Addresses become map pins on their own. Somebody types a street address and the system turns it into a point on a map by itself, using the Government of Canada's own address service, so nobody in the office is looking up coordinates or dragging markers around. How those maps look is a setting the owner can change, not a change that needs a developer.
Where it stands
Built in 2023. It went live and ran the owner's scheduling and customer records.
Different business, same shape of problem?
Every system written up here started with somebody describing an operation that had outgrown the way it was being run. If that sounded familiar, tell me how yours works today.
Talk through your version