# muhafiq/wise-api-services architecture

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

- Interactive diagram: https://gitdiagram.com/muhafiq/wise-api-services
- Repository: https://github.com/muhafiq/wise-api-services

## Overview

WISE is a Flask API for wound identification and related user services. Its principal workflow exposes a prediction endpoint alongside account access, saved diagnosis history, and nearby-hospital lookup. The sampled code shows application setup, registration/login/logout, profile and password-reset behavior, and hospital lookup logic; prediction and history resource internals were not sampled, so their internal wiring is intentionally omitted. The README also confirms a TensorFlow model and Google Cloud Storage configuration, but does not establish which request handlers use them.

Main entry points: [`app/api/__init__.py`](https://github.com/muhafiq/wise-api-services/blob/master/app/api/__init__.py) (API routes), [`app/api/resources/user.py`](https://github.com/muhafiq/wise-api-services/blob/master/app/api/resources/user.py) (User endpoints), [`app/app.py`](https://github.com/muhafiq/wise-api-services/blob/master/app/app.py) (Flask app), [`app/api/resources/auth.py`](https://github.com/muhafiq/wise-api-services/blob/master/app/api/resources/auth.py) (Auth endpoints)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_app["API application"]
  node_flask_app["Flask app<br/>[app.py]"]
  node_api_router["API routes<br/>[__init__.py]"]
  node_error_handlers["Error handlers<br/>[error_handler.py]"]
end

subgraph group_identity["Identity and profiles"]
  node_auth["Auth endpoints<br/>[auth.py]"]
  node_user_endpoints["User endpoints<br/>[user.py]"]
  node_user_schema["User validation<br/>[users.py]"]
  node_user_model["User data<br/>[users.py]"]
  node_token_blacklist["Revoked tokens<br/>[token_blacklist.py]"]
  node_token_utils["Reset tokens<br/>[token.py]"]
  node_mailer["Reset email<br/>[mailer.py]"]
end

subgraph group_wounds["Wound records"]
  node_predict["Wound prediction<br/>[predict.py]"]
  node_history["Diagnosis history<br/>[history.py]"]
  node_medical_records["Medical records<br/>[medical_records.py]"]
  node_injury_classes["Injury classes<br/>[injury_classes.py]"]
  node_medical_schema["Record validation<br/>[medical_records.py]"]
  node_injury_schema["Class validation<br/>[injury_classes.py]"]
end

subgraph group_discovery["Care discovery"]
  node_hospital_endpoint["Hospital endpoint<br/>[hospital.py]"]
  node_hospital_lookup["Hospital lookup<br/>[hospital.py]"]
end

subgraph group_infra["Shared infrastructure"]
  node_database[("SQL database")]
  node_extensions["Flask extensions<br/>[extentions.py]"]
  node_gcs[("Cloud Storage")]
  node_tensorflow["TensorFlow model"]
end

node_client(("API client"))
node_overpass["Overpass API"]

node_client -->|"sends requests"| node_flask_app
node_flask_app -->|"registers routes"| node_api_router
node_flask_app -->|"initializes"| node_extensions
node_flask_app -->|"registers handlers"| node_error_handlers
node_api_router -->|"dispatches auth"| node_auth
node_api_router -->|"dispatches users"| node_user_endpoints
node_api_router -->|"dispatches prediction"| node_predict
node_api_router -->|"dispatches history"| node_history
node_api_router -->|"dispatches lookup"| node_hospital_endpoint
node_auth -->|"validates input"| node_user_schema
node_user_endpoints -->|"validates input"| node_user_schema
node_user_schema -->|"checks uniqueness"| node_user_model
node_auth -->|"reads and creates"| node_user_model
node_auth -->|"records revocation"| node_token_blacklist
node_api_router -->|"checks revocation"| node_token_blacklist
node_user_endpoints -->|"reads and updates"| node_user_model
node_user_endpoints -->|"generates and validates"| node_token_utils
node_user_endpoints -->|"sends reset email"| node_mailer
node_extensions -->|"configures ORM"| node_database
node_extensions -->|"loads model"| node_tensorflow
node_extensions -->|"creates client"| node_gcs
node_hospital_lookup -->|"queries hospitals"| node_overpass
node_medical_records -->|"references class"| node_injury_classes

click node_flask_app "https://github.com/muhafiq/wise-api-services/blob/master/app/app.py"
click node_api_router "https://github.com/muhafiq/wise-api-services/blob/master/app/api/__init__.py"
click node_error_handlers "https://github.com/muhafiq/wise-api-services/blob/master/app/api/error_handler.py"
click node_auth "https://github.com/muhafiq/wise-api-services/blob/master/app/api/resources/auth.py"
click node_user_endpoints "https://github.com/muhafiq/wise-api-services/blob/master/app/api/resources/user.py"
click node_user_schema "https://github.com/muhafiq/wise-api-services/blob/master/app/api/schemas/users.py"
click node_user_model "https://github.com/muhafiq/wise-api-services/blob/master/app/models/users.py"
click node_token_blacklist "https://github.com/muhafiq/wise-api-services/blob/master/app/models/token_blacklist.py"
click node_token_utils "https://github.com/muhafiq/wise-api-services/blob/master/app/utils/token.py"
click node_mailer "https://github.com/muhafiq/wise-api-services/blob/master/app/services/mailer.py"
click node_predict "https://github.com/muhafiq/wise-api-services/blob/master/app/api/resources/predict.py"
click node_history "https://github.com/muhafiq/wise-api-services/blob/master/app/api/resources/history.py"
click node_medical_records "https://github.com/muhafiq/wise-api-services/blob/master/app/models/medical_records.py"
click node_injury_classes "https://github.com/muhafiq/wise-api-services/blob/master/app/models/injury_classes.py"
click node_medical_schema "https://github.com/muhafiq/wise-api-services/blob/master/app/api/schemas/medical_records.py"
click node_injury_schema "https://github.com/muhafiq/wise-api-services/blob/master/app/api/schemas/injury_classes.py"
click node_hospital_endpoint "https://github.com/muhafiq/wise-api-services/blob/master/app/api/resources/hospital.py"
click node_hospital_lookup "https://github.com/muhafiq/wise-api-services/blob/master/app/utils/hospital.py"
click node_extensions "https://github.com/muhafiq/wise-api-services/blob/master/app/extentions.py"

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_flask_app,node_api_router,node_error_handlers,node_client toneBlue
class node_auth,node_user_endpoints,node_user_schema,node_user_model,node_token_blacklist,node_token_utils,node_mailer toneAmber
class node_predict,node_history,node_medical_records,node_injury_classes,node_medical_schema,node_injury_schema,node_overpass toneMint
class node_hospital_endpoint,node_hospital_lookup toneRose
class node_database,node_extensions,node_gcs,node_tensorflow toneIndigo
```

## Components

### API application

- [Flask app](https://github.com/muhafiq/wise-api-services/blob/master/app/app.py): `app/app.py`
- [API routes](https://github.com/muhafiq/wise-api-services/blob/master/app/api/__init__.py): `app/api/__init__.py`
- [Error handlers](https://github.com/muhafiq/wise-api-services/blob/master/app/api/error_handler.py): `app/api/error_handler.py`

### Identity and profiles

- [Auth endpoints](https://github.com/muhafiq/wise-api-services/blob/master/app/api/resources/auth.py): `app/api/resources/auth.py`
- [User endpoints](https://github.com/muhafiq/wise-api-services/blob/master/app/api/resources/user.py): `app/api/resources/user.py`
- [User validation](https://github.com/muhafiq/wise-api-services/blob/master/app/api/schemas/users.py): `app/api/schemas/users.py`
- [User data](https://github.com/muhafiq/wise-api-services/blob/master/app/models/users.py): `app/models/users.py`
- [Revoked tokens](https://github.com/muhafiq/wise-api-services/blob/master/app/models/token_blacklist.py): `app/models/token_blacklist.py`
- [Reset tokens](https://github.com/muhafiq/wise-api-services/blob/master/app/utils/token.py): `app/utils/token.py`
- [Reset email](https://github.com/muhafiq/wise-api-services/blob/master/app/services/mailer.py): `app/services/mailer.py`

### Wound records

- [Wound prediction](https://github.com/muhafiq/wise-api-services/blob/master/app/api/resources/predict.py): `app/api/resources/predict.py`
- [Diagnosis history](https://github.com/muhafiq/wise-api-services/blob/master/app/api/resources/history.py): `app/api/resources/history.py`
- [Medical records](https://github.com/muhafiq/wise-api-services/blob/master/app/models/medical_records.py): `app/models/medical_records.py`
- [Injury classes](https://github.com/muhafiq/wise-api-services/blob/master/app/models/injury_classes.py): `app/models/injury_classes.py`
- [Record validation](https://github.com/muhafiq/wise-api-services/blob/master/app/api/schemas/medical_records.py): `app/api/schemas/medical_records.py`
- [Class validation](https://github.com/muhafiq/wise-api-services/blob/master/app/api/schemas/injury_classes.py): `app/api/schemas/injury_classes.py`

### Care discovery

- [Hospital endpoint](https://github.com/muhafiq/wise-api-services/blob/master/app/api/resources/hospital.py): `app/api/resources/hospital.py`
- [Hospital lookup](https://github.com/muhafiq/wise-api-services/blob/master/app/utils/hospital.py): `app/utils/hospital.py`

### Shared infrastructure

- **SQL database**
- [Flask extensions](https://github.com/muhafiq/wise-api-services/blob/master/app/extentions.py): `app/extentions.py`
- **Cloud Storage**
- **TensorFlow model**

### Other components

- **API client**
- **Overpass API**

## Connections

- API client → Flask app: sends requests
- Flask app → API routes: registers routes
- Flask app → Flask extensions: initializes
- Flask app → Error handlers: registers handlers
- API routes → Auth endpoints: dispatches auth
- API routes → User endpoints: dispatches users
- API routes → Wound prediction: dispatches prediction
- API routes → Diagnosis history: dispatches history
- API routes → Hospital endpoint: dispatches lookup
- Auth endpoints → User validation: validates input
- User endpoints → User validation: validates input
- User validation → User data: checks uniqueness
- Auth endpoints → User data: reads and creates
- Auth endpoints → Revoked tokens: records revocation
- API routes → Revoked tokens: checks revocation
- User endpoints → User data: reads and updates
- User endpoints → Reset tokens: generates and validates
- User endpoints → Reset email: sends reset email
- Flask extensions → SQL database: configures ORM
- Flask extensions → TensorFlow model: loads model
- Flask extensions → Cloud Storage: creates client
- Hospital lookup → Overpass API: queries hospitals
- Medical records → Injury classes: references class
