User
- email · phone · locale
- Stripe columns (Cashier)
- onboarding_completed_at
- 1—n Pet
- 1—n Appointment
- 1—1 Veterinary
SaaS veterinary booking platform for clinics and pet owners with scheduling, notifications and client portal.
Booking a vet is still often a phone call during opening hours, with no reminder and no history. Clinics run their schedules, absences and records in separate tools, and finding an on-call vet at night or at the weekend is down to luck.
Digitize appointment booking for veterinary clinics while keeping a simple experience for pet owners.
Vetzy is a monorepo of seven Laravel applications, each in its own Git submodule with its own MySQL database: the booking app for pet owners and clinics, a shared admin, a central REST API, the blog, a veterinary job board, the on-call map and the vet assistants’ workspace. Shared code lives in 17 internal packages; no transaction spans two databases, and cross-application writes go through HTTP or an outbox table.
Live at vetzy.eu, in French, English and Dutch. The on-call map covers Belgium, France, Switzerland and Luxembourg. A deployment only runs once four workflows have passed on the same commit, and every application is then checked in production.
Founder & lead developer
Users
Application
External services
The owner searches for a vet or clinic by speciality, location, emergency or language; Scout queries Meilisearch, with an SQL fallback.
In the Livewire booking window, they pick the pet, the reason and the slot; conflicts and the vet’s absences are checked.
The appointment is stored and shows up both in the owner’s space and in the clinic’s calendar.
Redis jobs send reminders by e-mail or SMS according to preferences; every send is logged.
The vet assistant signs in to their workspace through SSO and records the patient’s arrival and intake notes.
A late cancellation can trigger a Stripe Checkout payment, tracked until it expires.
The main entities, their key fields and their relations.
By speciality, emergency, language and services, with a widen-the-area option.
For vets and clinics, with absences, stand-ins and occupancy rate.
Consultations, vaccines, treatments and documents.
Vaccines, medication, birthdays and satisfaction surveys.
Four countries, URLs per country and language.
Listings, alerts, Stripe subscriptions and AI matching.
ProblemApache went down for five minutes each time: processes hung on TLS connections left open after a fail2ban ban.
FixAn Apache and PHP-FPM hardening script, and an incident runbook.
ProblemSome reminders went out with the raw key as their subject instead of the translated text.
FixA fourth i18n audit checks in CI that every key used exists.
ProblemWorkflows stopped starting.
FixMoved to self-hosted runners, selected by a variable.
ProblemIn production, the security policy blocked the map library.
FixLibrary served from an allowed CDN, and the CSP tested.
ProblemThe suite ran against the development database.
FixTest database enforced in the PHPUnit configuration.
Taken from the project’s source code and Git history on 8 October 2026. No usage or revenue figures are published.
Available for PHP / Laravel / WordPress / Silverstripe missions in Belgium and remote EU.