How soutbiaafnts/faro-animal works
Faro Animal is an internal veterinary-clinic management web application. Authenticated veterinarians manage species and their breeds, register pets linked to breeds, then schedule and maintain appointments linked to pets and veterinarians; appointment records can be exported as PDF. The map follows the documented controller–service–model layers and the sampled route/controller calls. Some CRUD wiring and the dynamic breed-selection client are README-documented but not sampled, so their internal links are omitted where ownership is uncertain.
Main entry points: Routes.php Routes and guards · AppointmentController.php Appointment controller · PetController.php Pet controller · BreedController.php Breed controller
Components 30
Web entry and access
- Routes and guards
app/Config/Routes.php - Auth filter
app/Filters/AuthFilter.php - Home controller
app/Controllers/HomeController.php
Veterinarian accounts
- Auth controller
app/Controllers/AuthController.php - Auth service
app/Services/AuthService.php - User controller
app/Controllers/UserController.php - User service
app/Services/UserService.php - User model
app/Models/UserModel.php - Mail library
app/Libraries/Mail.php
Clinic catalog
- Species controller
app/Controllers/SpecieController.php - Species service
app/Services/SpecieService.php - Species model
app/Models/SpecieModel.php - Breed controller
app/Controllers/BreedController.php - Breed service
app/Services/BreedService.php - Breed model
app/Models/BreedModel.php
Pet care records
- Pet controller
app/Controllers/PetController.php - Pet service
app/Services/PetService.php - Pet model
app/Models/PetModel.php - Appointment controller
app/Controllers/AppointmentController.php - Appointment service
app/Services/AppointmentService.php - Appointment model
app/Models/AppointmentModel.php - Clinic database
- Dompdf renderer
Web interface
- Browser interface
- Shared layout
app/Views/layouts/main.php - Pet pages
app/Views/pets/list.php - Breed pages
app/Views/breeds/list.php - Appointment pages
app/Views/appointments/list.php
Other components
- Veterinarian
- Email provider
Connections 41
- Veterinarian → Browser interface: uses
- Browser interface → Routes and guards: sends requests
- Routes and guards → Home controller: dispatches public
- Routes and guards → Auth controller: dispatches public
- Routes and guards → User controller: dispatches account
- Routes and guards → Species controller: dispatches CRUD
- Routes and guards → Breed controller: dispatches CRUD
- Routes and guards → Pet controller: dispatches CRUD
- Routes and guards → Appointment controller: dispatches CRUD
- Routes and guards → Auth filter: guards restricted
- Auth controller → Auth service: delegates auth
- User controller → User service: delegates account
- Auth service → User model: reads and writes
- User service → User model: reads and writes
- Auth service → Mail library: sends reset email
- Mail library → Email provider: delivers email
- Species controller → Species service: delegates CRUD
- Breed controller → Breed service: delegates CRUD
- Breed controller → Species service: loads species
- Breed service → Breed model: manages breeds
- Species service → Species model: manages species
- Pet controller → Pet service: delegates pet work
- Pet controller → Species service: loads species
- Pet service → Pet model: manages pets
- Pet controller → Breed controller: requests breed options
- Appointment controller → Appointment service: delegates appointments
- Appointment controller → Pet service: loads pets
- Appointment service → Appointment model: manages appointments
- Appointment service → Pet service: checks pet
- Appointment service → User service: checks veterinarian
- User model → Clinic database: reads and writes
- Species model → Clinic database: reads and writes
- Breed model → Clinic database: reads and writes
- Pet model → Clinic database: reads and writes
- Appointment model → Clinic database: reads and writes
- Pet controller → Pet pages: renders pages
- Breed controller → Breed pages: renders pages
- Appointment controller → Appointment pages: renders pages
- Browser interface → Shared layout: receives pages
- Appointment controller → Dompdf renderer: renders PDF
- Appointment controller → Browser interface: streams PDF