# boxboxmn/pawssion-pet-adoption-and-welfare-system architecture

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

- Interactive diagram: https://gitdiagram.com/boxboxmn/pawssion-pet-adoption-and-welfare-system
- Repository: https://github.com/boxboxmn/pawssion-pet-adoption-and-welfare-system

## Overview

PAWSsion is a pet-adoption and welfare application for adopters, animal-welfare organizations, and administrators. The adopter workflow spans account access, pet discovery and matching, adoption applications and interviews, donations, and post-adoption updates. Organizations manage pets, applications, donations, and reporting; administrators oversee accounts, partner organizations, and platform activity. The sampled source shows an Express/MySQL application and an optional Flask-backed matching service. Several README-described capabilities are represented by their product areas, but unsampled routes and modules do not establish all internal call links.

Main entry points: [`public/user`](https://github.com/boxboxmn/pawssion-pet-adoption-and-welfare-system/tree/main/public/user) (Adopter pages), [`config/database.js`](https://github.com/boxboxmn/pawssion-pet-adoption-and-welfare-system/blob/main/config/database.js) (Application database), [`routes/userRoutes.js`](https://github.com/boxboxmn/pawssion-pet-adoption-and-welfare-system/blob/main/routes/userRoutes.js) (Adopter routes), [`public/organization`](https://github.com/boxboxmn/pawssion-pet-adoption-and-welfare-system/tree/main/public/organization) (Organization pages)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_experience["User experience"]
  node_user_ui["Adopter pages"]
  node_org_ui["Organization pages"]
  node_admin_ui["Admin pages"]
  node_auth_ui["Account pages"]
end

subgraph group_backend["Application API"]
  node_server["Express server<br/>[server.js]"]
  node_auth_routes["Authentication routes<br/>[auth.js]"]
  node_user_routes["Adopter routes<br/>[userRoutes.js]"]
  node_org_routes["Organization routes<br/>[orgRoutes.js]"]
  node_admin_routes["Admin routes<br/>[adminRoutes.js]"]
  node_auth_logic["Auth controller<br/>[AuthController.js]"]
  node_mysql[("Application database<br/>[database.js]")]
end

subgraph group_adoption["Adoption operations"]
  node_user_logic["Adopter controller<br/>[userController.js]"]
  node_org_logic["Organization controller<br/>[orgController.js]"]
  node_adoption_model["Adoption model<br/>[userModel.js]"]
  node_user_analytics["Adopter activities<br/>[userKamustahan.js]"]
  node_org_analytics["Organization analytics<br/>[orgAnalytics.js]"]
  node_donations["Donation experiences<br/>[userDonation.js]"]
end

subgraph group_operations["Platform operations"]
  node_admin_logic["Admin controller<br/>[adminController.js]"]
end

subgraph group_matching["Pet matching"]
  node_match_logic["Match controller"]
  node_embed_service["Embedding client"]
  node_match_service["Match service"]
  node_flask["Text and embedding API<br/>[app.py]"]
end

node_adopter(("Adopter"))
node_organization(("Organization"))
node_administrator(("Administrator"))

node_adopter -->|"uses"| node_auth_ui
node_adopter -->|"uses"| node_user_ui
node_organization -->|"uses"| node_org_ui
node_administrator -->|"uses"| node_admin_ui
node_auth_ui -->|"requests"| node_auth_routes
node_auth_routes -->|"dispatches"| node_auth_logic
node_auth_logic -->|"reads and writes"| node_mysql
node_user_ui -->|"requests"| node_user_routes
node_server -->|"mounts"| node_user_routes
node_user_routes -->|"dispatches"| node_user_logic
node_user_logic -->|"reads and writes"| node_mysql
node_user_logic -->|"calls"| node_adoption_model
node_user_ui -->|"requests"| node_match_logic
node_user_routes -->|"dispatches"| node_match_logic
node_match_logic -->|"calls"| node_match_service
node_match_service -->|"calls"| node_embed_service
node_embed_service -.->|"posts text"| node_flask
node_org_ui -->|"requests"| node_org_routes
node_org_routes -->|"dispatches"| node_org_logic
node_org_logic -->|"reads and writes"| node_mysql
node_org_logic -->|"generates embeddings"| node_embed_service
node_admin_ui -->|"requests"| node_admin_routes
node_admin_routes -->|"dispatches"| node_admin_logic
node_admin_logic -->|"reads and writes"| node_mysql
node_server -->|"queries"| node_mysql
node_user_ui -->|"uses"| node_user_analytics
node_org_ui -->|"uses"| node_org_analytics
node_user_ui -->|"uses"| node_donations

click node_user_ui "https://github.com/boxboxmn/pawssion-pet-adoption-and-welfare-system/tree/main/public/user"
click node_org_ui "https://github.com/boxboxmn/pawssion-pet-adoption-and-welfare-system/tree/main/public/organization"
click node_admin_ui "https://github.com/boxboxmn/pawssion-pet-adoption-and-welfare-system/tree/main/public/admin"
click node_auth_ui "https://github.com/boxboxmn/pawssion-pet-adoption-and-welfare-system/tree/main/public/auth"
click node_server "https://github.com/boxboxmn/pawssion-pet-adoption-and-welfare-system/blob/main/server.js"
click node_auth_routes "https://github.com/boxboxmn/pawssion-pet-adoption-and-welfare-system/blob/main/routes/auth.js"
click node_user_routes "https://github.com/boxboxmn/pawssion-pet-adoption-and-welfare-system/blob/main/routes/userRoutes.js"
click node_org_routes "https://github.com/boxboxmn/pawssion-pet-adoption-and-welfare-system/blob/main/routes/orgRoutes.js"
click node_admin_routes "https://github.com/boxboxmn/pawssion-pet-adoption-and-welfare-system/blob/main/routes/adminRoutes.js"
click node_auth_logic "https://github.com/boxboxmn/pawssion-pet-adoption-and-welfare-system/blob/main/controllers/AuthController.js"
click node_user_logic "https://github.com/boxboxmn/pawssion-pet-adoption-and-welfare-system/blob/main/controllers/userController.js"
click node_org_logic "https://github.com/boxboxmn/pawssion-pet-adoption-and-welfare-system/blob/main/controllers/orgController.js"
click node_match_logic "https://github.com/boxboxmn/pawssion-pet-adoption-and-welfare-system/blob/main/controllers/matchmakerController.js"
click node_adoption_model "https://github.com/boxboxmn/pawssion-pet-adoption-and-welfare-system/blob/main/models/userModel.js"
click node_mysql "https://github.com/boxboxmn/pawssion-pet-adoption-and-welfare-system/blob/main/config/database.js"
click node_admin_logic "https://github.com/boxboxmn/pawssion-pet-adoption-and-welfare-system/blob/main/controllers/adminController.js"
click node_embed_service "https://github.com/boxboxmn/pawssion-pet-adoption-and-welfare-system/blob/main/services/embeddingService.js"
click node_match_service "https://github.com/boxboxmn/pawssion-pet-adoption-and-welfare-system/blob/main/services/matchmakingService.js"
click node_flask "https://github.com/boxboxmn/pawssion-pet-adoption-and-welfare-system/blob/main/flask-api/app.py"
click node_user_analytics "https://github.com/boxboxmn/pawssion-pet-adoption-and-welfare-system/blob/main/public/assets/js/userKamustahan.js"
click node_org_analytics "https://github.com/boxboxmn/pawssion-pet-adoption-and-welfare-system/blob/main/public/assets/js/orgAnalytics.js"
click node_donations "https://github.com/boxboxmn/pawssion-pet-adoption-and-welfare-system/blob/main/public/assets/js/userDonation.js"

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_user_ui,node_org_ui,node_admin_ui,node_auth_ui toneBlue
class node_server,node_auth_routes,node_user_routes,node_org_routes,node_admin_routes,node_auth_logic,node_mysql toneAmber
class node_user_logic,node_org_logic,node_adoption_model,node_user_analytics,node_org_analytics,node_donations toneMint
class node_admin_logic toneRose
class node_match_logic,node_embed_service,node_match_service,node_flask,node_adopter,node_organization,node_administrator toneIndigo
```

## Components

### User experience

- [Adopter pages](https://github.com/boxboxmn/pawssion-pet-adoption-and-welfare-system/tree/main/public/user): `public/user`
- [Organization pages](https://github.com/boxboxmn/pawssion-pet-adoption-and-welfare-system/tree/main/public/organization): `public/organization`
- [Admin pages](https://github.com/boxboxmn/pawssion-pet-adoption-and-welfare-system/tree/main/public/admin): `public/admin`
- [Account pages](https://github.com/boxboxmn/pawssion-pet-adoption-and-welfare-system/tree/main/public/auth): `public/auth`

### Application API

- [Express server](https://github.com/boxboxmn/pawssion-pet-adoption-and-welfare-system/blob/main/server.js): `server.js`
- [Authentication routes](https://github.com/boxboxmn/pawssion-pet-adoption-and-welfare-system/blob/main/routes/auth.js): `routes/auth.js`
- [Adopter routes](https://github.com/boxboxmn/pawssion-pet-adoption-and-welfare-system/blob/main/routes/userRoutes.js): `routes/userRoutes.js`
- [Organization routes](https://github.com/boxboxmn/pawssion-pet-adoption-and-welfare-system/blob/main/routes/orgRoutes.js): `routes/orgRoutes.js`
- [Admin routes](https://github.com/boxboxmn/pawssion-pet-adoption-and-welfare-system/blob/main/routes/adminRoutes.js): `routes/adminRoutes.js`
- [Auth controller](https://github.com/boxboxmn/pawssion-pet-adoption-and-welfare-system/blob/main/controllers/AuthController.js): `controllers/AuthController.js`
- [Application database](https://github.com/boxboxmn/pawssion-pet-adoption-and-welfare-system/blob/main/config/database.js): `config/database.js`

### Adoption operations

- [Adopter controller](https://github.com/boxboxmn/pawssion-pet-adoption-and-welfare-system/blob/main/controllers/userController.js): `controllers/userController.js`
- [Organization controller](https://github.com/boxboxmn/pawssion-pet-adoption-and-welfare-system/blob/main/controllers/orgController.js): `controllers/orgController.js`
- [Adoption model](https://github.com/boxboxmn/pawssion-pet-adoption-and-welfare-system/blob/main/models/userModel.js): `models/userModel.js`
- [Adopter activities](https://github.com/boxboxmn/pawssion-pet-adoption-and-welfare-system/blob/main/public/assets/js/userKamustahan.js): `public/assets/js/userKamustahan.js`
- [Organization analytics](https://github.com/boxboxmn/pawssion-pet-adoption-and-welfare-system/blob/main/public/assets/js/orgAnalytics.js): `public/assets/js/orgAnalytics.js`
- [Donation experiences](https://github.com/boxboxmn/pawssion-pet-adoption-and-welfare-system/blob/main/public/assets/js/userDonation.js): `public/assets/js/userDonation.js`

### Platform operations

- [Admin controller](https://github.com/boxboxmn/pawssion-pet-adoption-and-welfare-system/blob/main/controllers/adminController.js): `controllers/adminController.js`

### Pet matching

- [Match controller](https://github.com/boxboxmn/pawssion-pet-adoption-and-welfare-system/blob/main/controllers/matchmakerController.js): `controllers/matchmakerController.js`
- [Embedding client](https://github.com/boxboxmn/pawssion-pet-adoption-and-welfare-system/blob/main/services/embeddingService.js): `services/embeddingService.js`
- [Match service](https://github.com/boxboxmn/pawssion-pet-adoption-and-welfare-system/blob/main/services/matchmakingService.js): `services/matchmakingService.js`
- [Text and embedding API](https://github.com/boxboxmn/pawssion-pet-adoption-and-welfare-system/blob/main/flask-api/app.py): `flask-api/app.py`

### Other components

- **Adopter**
- **Organization**
- **Administrator**

## Connections

- Adopter → Account pages: uses
- Adopter → Adopter pages: uses
- Organization → Organization pages: uses
- Administrator → Admin pages: uses
- Account pages → Authentication routes: requests
- Authentication routes → Auth controller: dispatches
- Auth controller → Application database: reads and writes
- Adopter pages → Adopter routes: requests
- Express server → Adopter routes: mounts
- Adopter routes → Adopter controller: dispatches
- Adopter controller → Application database: reads and writes
- Adopter controller → Adoption model: calls
- Adopter pages → Match controller: requests
- Adopter routes → Match controller: dispatches
- Match controller → Match service: calls
- Match service → Embedding client: calls
- Embedding client → Text and embedding API: posts text
- Organization pages → Organization routes: requests
- Organization routes → Organization controller: dispatches
- Organization controller → Application database: reads and writes
- Organization controller → Embedding client: generates embeddings
- Admin pages → Admin routes: requests
- Admin routes → Admin controller: dispatches
- Admin controller → Application database: reads and writes
- Express server → Application database: queries
- Adopter pages → Adopter activities: uses
- Organization pages → Organization analytics: uses
- Adopter pages → Donation experiences: uses
