How simasch/aiup-petclinic works
AIUP PetClinic is a Vaadin/Spring clinic-management demo: users browse veterinarians, search and manage owners, maintain each owner’s pets, and book visits. The core journey starts at the application shell, finds an owner, opens the owner-and-pet history, then adds or edits a pet or books a visit. Repositories provide jOOQ-backed persistence over PostgreSQL; Flyway migrations define the schema. The README also describes a specification-first development approach and agent guardrails, but those are development practices rather than runtime product components. Relationships are limited to calls visible in excerpts or SOURCE INDEX references.
Main entry points: OwnerDetailsView.java Owner details · MainLayout.java Main navigation · OwnerRepository.java Owner persistence · AddVisitView.java Book pet visit
Components 24
Clinic UI
- Application startup
src/main/java/ai/unifiedprocess/petclinic/AiupPetclinicApplication.java - Main navigation
src/main/java/ai/unifiedprocess/petclinic/core/ui/MainLayout.java - Welcome page
src/main/java/ai/unifiedprocess/petclinic/welcome/ui/WelcomeView.java - Veterinarian directory
src/main/java/ai/unifiedprocess/petclinic/vet/ui/VetsView.java - Error handling views
src/main/java/ai/unifiedprocess/petclinic/core/ui/ErrorShellView.java
Owner Management
- Find owners
src/main/java/ai/unifiedprocess/petclinic/owner/ui/FindOwnersView.java - Owner details
src/main/java/ai/unifiedprocess/petclinic/owner/ui/OwnerDetailsView.java - Owner forms
src/main/java/ai/unifiedprocess/petclinic/owner/ui/OwnerForm.java - Owner route parameters
src/main/java/ai/unifiedprocess/petclinic/owner/ui/OwnerRouteParameters.java - Owner domain
src/main/java/ai/unifiedprocess/petclinic/owner/domain/Owner.java - Owner listings
src/main/java/ai/unifiedprocess/petclinic/owner/domain/OwnerListing.java
Pets and Visits
- Pet add and edit
src/main/java/ai/unifiedprocess/petclinic/pet/ui/AddPetView.java - Pet form
src/main/java/ai/unifiedprocess/petclinic/pet/ui/PetForm.java - Pet domain and types
src/main/java/ai/unifiedprocess/petclinic/pet/domain/Pet.java - Book pet visit
src/main/java/ai/unifiedprocess/petclinic/visit/ui/AddVisitView.java - Visit form
src/main/java/ai/unifiedprocess/petclinic/visit/ui/VisitForm.java - Visit domain
src/main/java/ai/unifiedprocess/petclinic/visit/domain/Visit.java - Veterinarian domain
src/main/java/ai/unifiedprocess/petclinic/vet/domain/Vet.java
Persistence
- Owner persistence
src/main/java/ai/unifiedprocess/petclinic/owner/domain/OwnerRepository.java - Pet persistence
src/main/java/ai/unifiedprocess/petclinic/pet/domain/PetRepository.java - Visit persistence
src/main/java/ai/unifiedprocess/petclinic/visit/domain/VisitRepository.java - Veterinarian data
src/main/java/ai/unifiedprocess/petclinic/vet/domain/VetRepository.java - PostgreSQL schema
src/main/resources/db/migration/V1__initial_schema.sql
Other components
- Clinic user
Connections 34
- Clinic user → Main navigation: uses
src/main/java/ai/unifiedprocess/petclinic/core/ui/MainLayout.java - Application startup → Main navigation: starts app
- Main navigation → Welcome page: navigates
src/main/java/ai/unifiedprocess/petclinic/core/ui/MainLayout.java - Main navigation → Find owners: navigates
src/main/java/ai/unifiedprocess/petclinic/core/ui/MainLayout.java - Main navigation → Veterinarian directory: navigates
src/main/java/ai/unifiedprocess/petclinic/core/ui/MainLayout.java - Main navigation → Error handling views: navigates
src/main/java/ai/unifiedprocess/petclinic/core/ui/MainLayout.java - Find owners → Owner persistence: searches
src/main/java/ai/unifiedprocess/petclinic/owner/ui/FindOwnersView.java - Find owners → Owner details: navigates
src/main/java/ai/unifiedprocess/petclinic/owner/ui/FindOwnersView.java - Find owners → Owner listings: displays
src/main/java/ai/unifiedprocess/petclinic/owner/ui/FindOwnersView.java - Owner details → Owner persistence: loads owner
src/main/java/ai/unifiedprocess/petclinic/owner/ui/OwnerDetailsView.java - Owner details → Pet persistence: loads pets
src/main/java/ai/unifiedprocess/petclinic/owner/ui/OwnerDetailsView.java - Owner details → Visit persistence: loads visits
src/main/java/ai/unifiedprocess/petclinic/owner/ui/OwnerDetailsView.java - Owner forms → Owner domain: binds fields
src/main/java/ai/unifiedprocess/petclinic/owner/ui/OwnerForm.java - Owner persistence → PostgreSQL schema: queries
src/main/java/ai/unifiedprocess/petclinic/owner/domain/OwnerRepository.java - Owner persistence → Owner domain: maps records
src/main/java/ai/unifiedprocess/petclinic/owner/domain/OwnerRepository.java - Owner persistence → Owner listings: builds results
src/main/java/ai/unifiedprocess/petclinic/owner/domain/OwnerRepository.java - Pet add and edit → Pet persistence: loads and saves
src/main/java/ai/unifiedprocess/petclinic/pet/ui/AddPetView.java - Pet add and edit → Pet form: uses form
src/main/java/ai/unifiedprocess/petclinic/pet/ui/AddPetView.java - Pet add and edit → Owner details: returns to
src/main/java/ai/unifiedprocess/petclinic/pet/ui/AddPetView.java - Pet form → Pet domain and types: validates
src/main/java/ai/unifiedprocess/petclinic/pet/ui/PetForm.java - Pet persistence → PostgreSQL schema: queries
src/main/java/ai/unifiedprocess/petclinic/pet/domain/PetRepository.java - Pet persistence → Pet domain and types: maps records
src/main/java/ai/unifiedprocess/petclinic/pet/domain/PetRepository.java - Book pet visit → Owner persistence: checks owner
src/main/java/ai/unifiedprocess/petclinic/visit/ui/AddVisitView.java - Book pet visit → Pet persistence: checks pet
src/main/java/ai/unifiedprocess/petclinic/visit/ui/AddVisitView.java - Book pet visit → Visit persistence: loads and saves
src/main/java/ai/unifiedprocess/petclinic/visit/ui/AddVisitView.java - Book pet visit → Visit form: uses form
src/main/java/ai/unifiedprocess/petclinic/visit/ui/AddVisitView.java - Book pet visit → Owner details: returns to
src/main/java/ai/unifiedprocess/petclinic/visit/ui/AddVisitView.java - Visit form → Visit domain: creates visit
src/main/java/ai/unifiedprocess/petclinic/visit/ui/VisitForm.java - Visit persistence → PostgreSQL schema: queries
src/main/java/ai/unifiedprocess/petclinic/visit/domain/VisitRepository.java - Visit persistence → Visit domain: maps records
src/main/java/ai/unifiedprocess/petclinic/visit/domain/VisitRepository.java - Veterinarian directory → Veterinarian data: loads vets
src/main/java/ai/unifiedprocess/petclinic/vet/ui/VetsView.java - Veterinarian data → Veterinarian domain: maps records
src/main/java/ai/unifiedprocess/petclinic/vet/domain/VetRepository.java - Veterinarian data → PostgreSQL schema: queries
- Owner details → Owner route parameters: builds routes
src/main/java/ai/unifiedprocess/petclinic/owner/ui/OwnerDetailsView.java