# lauraccort/petadote architecture

> Architecture diagram of the GitHub repository lauraccort/petadote, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-25). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/lauraccort/petadote
- Repository: https://github.com/lauraccort/petadote

## Overview

PetAdote is a domain model for managing animal shelter adoption and post-adoption follow-up. The modeled workflow links an available animal and adopter to an evaluation process, then requires a favorable assessment and scheduled follow-up visits before completion. The README also describes breed enrichment and reports, but the supplied tree contains only model classes; no application entry point, API client, or reporting implementation is evidenced.

Main entry points: [`src/br/com/petadote/model/ProcessoAdocao.java`](https://github.com/lauraccort/petadote/blob/main/src/br/com/petadote/model/ProcessoAdocao.java) (Adoption process), [`src/br/com/petadote/model/Animal.java`](https://github.com/lauraccort/petadote/blob/main/src/br/com/petadote/model/Animal.java) (Animal), [`src/br/com/petadote/model/Abrigo.java`](https://github.com/lauraccort/petadote/blob/main/src/br/com/petadote/model/Abrigo.java) (Shelter), [`src/br/com/petadote/model/InfoRaca.java`](https://github.com/lauraccort/petadote/blob/main/src/br/com/petadote/model/InfoRaca.java) (Breed details)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_care["Shelter and Animals"]
  node_shelter["Shelter<br/>[Abrigo.java]"]
  node_animal["Animal<br/>[Animal.java]"]
  node_animal_types["Animal types<br/>[Cao.java]"]
  node_breed_info["Breed details<br/>[InfoRaca.java]"]
end

subgraph group_adoption["Adoption Process"]
  node_adopter["Adopter<br/>[Adotante.java]"]
  node_process["Adoption process"]
  node_assessment["Assessment<br/>[Avaliacao.java]"]
end

subgraph group_followup["Post-Adoption"]
  node_visit["Follow-up visit<br/>[Visita.java]"]
end

node_operator(("ONG operator"))
node_dog_api["TheDogAPI"]
node_cat_api["TheCatAPI"]
node_reports["Reports"]

node_operator -->|"manages"| node_shelter
node_operator -->|"registers"| node_animal
node_shelter -->|"registers within capacity"| node_animal
node_animal -->|"specialized as"| node_animal_types
node_dog_api -.->|"provides breed data"| node_breed_info
node_cat_api -.->|"provides breed data"| node_breed_info
node_operator -->|"registers"| node_adopter
node_operator -->|"opens"| node_process
node_process -->|"checks and updates status"| node_animal
node_process -->|"checks limit; records history"| node_adopter
node_process -->|"records and checks"| node_assessment
node_operator -->|"approves or completes"| node_process
node_process -->|"schedules and validates"| node_visit
node_operator -->|"records outcome"| node_visit

click node_shelter "https://github.com/lauraccort/petadote/blob/main/src/br/com/petadote/model/Abrigo.java"
click node_animal "https://github.com/lauraccort/petadote/blob/main/src/br/com/petadote/model/Animal.java"
click node_animal_types "https://github.com/lauraccort/petadote/blob/main/src/br/com/petadote/model/Cao.java"
click node_breed_info "https://github.com/lauraccort/petadote/blob/main/src/br/com/petadote/model/InfoRaca.java"
click node_adopter "https://github.com/lauraccort/petadote/blob/main/src/br/com/petadote/model/Adotante.java"
click node_process "https://github.com/lauraccort/petadote/blob/main/src/br/com/petadote/model/ProcessoAdocao.java"
click node_assessment "https://github.com/lauraccort/petadote/blob/main/src/br/com/petadote/model/Avaliacao.java"
click node_visit "https://github.com/lauraccort/petadote/blob/main/src/br/com/petadote/model/Visita.java"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_shelter,node_animal,node_animal_types,node_breed_info toneBlue
class node_adopter,node_process,node_assessment toneAmber
class node_visit,node_dog_api,node_cat_api toneMint
class node_operator,node_reports toneIndigo
```

## Components

### Shelter and Animals

- [Shelter](https://github.com/lauraccort/petadote/blob/main/src/br/com/petadote/model/Abrigo.java): `src/br/com/petadote/model/Abrigo.java`
- [Animal](https://github.com/lauraccort/petadote/blob/main/src/br/com/petadote/model/Animal.java): `src/br/com/petadote/model/Animal.java`
- [Animal types](https://github.com/lauraccort/petadote/blob/main/src/br/com/petadote/model/Cao.java): `src/br/com/petadote/model/Cao.java`
- [Breed details](https://github.com/lauraccort/petadote/blob/main/src/br/com/petadote/model/InfoRaca.java): `src/br/com/petadote/model/InfoRaca.java`

### Adoption Process

- [Adopter](https://github.com/lauraccort/petadote/blob/main/src/br/com/petadote/model/Adotante.java): `src/br/com/petadote/model/Adotante.java`
- [Adoption process](https://github.com/lauraccort/petadote/blob/main/src/br/com/petadote/model/ProcessoAdocao.java): `src/br/com/petadote/model/ProcessoAdocao.java`
- [Assessment](https://github.com/lauraccort/petadote/blob/main/src/br/com/petadote/model/Avaliacao.java): `src/br/com/petadote/model/Avaliacao.java`

### Post-Adoption

- [Follow-up visit](https://github.com/lauraccort/petadote/blob/main/src/br/com/petadote/model/Visita.java): `src/br/com/petadote/model/Visita.java`

### Other components

- **ONG operator**
- **TheDogAPI**
- **TheCatAPI**
- **Reports**

## Connections

- ONG operator → Shelter: manages
- ONG operator → Animal: registers
- Shelter → Animal: registers within capacity
- Animal → Animal types: specialized as
- TheDogAPI → Breed details: provides breed data
- TheCatAPI → Breed details: provides breed data
- ONG operator → Adopter: registers
- ONG operator → Adoption process: opens
- Adoption process → Animal: checks and updates status
- Adoption process → Adopter: checks limit; records history
- Adoption process → Assessment: records and checks
- ONG operator → Adoption process: approves or completes
- Adoption process → Follow-up visit: schedules and validates
- ONG operator → Follow-up visit: records outcome
