# lordkall/media-app architecture

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

- Interactive diagram: https://gitdiagram.com/lordkall/media-app
- Repository: https://github.com/lordkall/media-app

## Overview

Salud Now is a healthcare platform for patients, doctors, assistants, and clinics. Its principal workflow is a user entering through the client, authenticating and using API endpoints to discover doctors or book appointments, with account and appointment data persisted by the backend. The repository also exposes administration, subscriptions, clinics, support, conversations, ads, and assistant features. The sampled frontend is a Flet client; the Flutter files are generated/runtime assets, so they are not represented as a separate application. Some subsystem links rely on SOURCE INDEX references rather than inspected implementation excerpts.

Main entry points: [`backend/app/api/v1/router.py`](https://github.com/lordkall/media-app/blob/master/backend/app/api/v1/router.py) (API router), [`backend/app/api/v1/endpoints/appointments.py`](https://github.com/lordkall/media-app/blob/master/backend/app/api/v1/endpoints/appointments.py) (Appointments), [`backend/app/core/subscription_service.py`](https://github.com/lordkall/media-app/blob/master/backend/app/core/subscription_service.py) (Subscriptions), [`backend/app/core/database.py`](https://github.com/lordkall/media-app/blob/master/backend/app/core/database.py) (Database sessions)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Client"]
  node_flet["Flet application<br/>[main.py]"]
  node_home["Home and navigation<br/>[home.py]"]
  node_api_client["API client<br/>[api_client.py]"]
end

subgraph group_api["API"]
  node_app["FastAPI application<br/>[main.py]"]
  node_router["API router<br/>[router.py]"]
end

subgraph group_domain["Domain services"]
  node_auth["Authentication<br/>[auth.py]"]
  node_users["User accounts<br/>[users.py]"]
  node_doctors["Doctor directory<br/>[doctors.py]"]
  node_appointments["Appointments<br/>[appointments.py]"]
  node_assistant["Assistant features<br/>[assistant.py]"]
  node_admin["Administration<br/>[admin.py]"]
  node_subscriptions["Subscriptions"]
  node_other_api["Additional API features"]
end

subgraph group_data["Data layer"]
  node_db_session["Database sessions<br/>[database.py]"]
  node_user_model[("User records<br/>[users.py]")]
  node_doctor_model[("Doctor records<br/>[doctors.py]")]
  node_appointment_model[("Appointment records<br/>[appointments.py]")]
  node_clinic_model[("Clinic records<br/>[clinics.py]")]
  node_subscription_model[("Subscription records<br/>[subscriptions.py]")]
  node_notification_model[("Notifications<br/>[notifications.py]")]
end

subgraph group_ops["Background services"]
  node_firebase["Push notifications<br/>[firebase.py]"]
  node_tasks["Scheduled tasks"]
end

node_user(("App user"))

node_user -->|"uses"| node_flet
node_flet -->|"opens"| node_home
node_flet -->|"configures"| node_api_client
node_flet -->|"requests profile"| node_users
node_app -->|"mounts"| node_router
node_router -->|"routes to"| node_auth
node_router -->|"routes to"| node_users
node_router -->|"routes to"| node_doctors
node_router -->|"routes to"| node_appointments
node_router -->|"routes to"| node_assistant
node_router -->|"routes to"| node_admin
node_router -->|"routes to"| node_subscriptions
node_router -->|"routes to"| node_other_api
node_auth -->|"uses sessions"| node_db_session
node_users -.->|"uses sessions"| node_db_session
node_doctors -.->|"uses sessions"| node_db_session
node_appointments -.->|"uses sessions"| node_db_session
node_assistant -->|"uses sessions"| node_db_session
node_admin -->|"uses sessions"| node_db_session
node_subscriptions -->|"reads and updates"| node_user_model
node_subscriptions -->|"reads and updates"| node_doctor_model
node_subscriptions -->|"reads and updates"| node_clinic_model
node_subscriptions -->|"creates and updates"| node_subscription_model
node_subscriptions -->|"creates notices"| node_notification_model
node_assistant -->|"reads"| node_appointment_model
node_assistant -->|"reads"| node_doctor_model
node_appointments -->|"uses records"| node_appointment_model
node_appointments -->|"uses records"| node_doctor_model
node_appointments -->|"uses records"| node_user_model
node_appointments -->|"uses records"| node_clinic_model
node_app -->|"starts jobs"| node_tasks
node_notification_model -->|"sends push"| node_firebase

click node_flet "https://github.com/lordkall/media-app/blob/master/backend/frontend/main.py"
click node_home "https://github.com/lordkall/media-app/blob/master/backend/frontend/views/home.py"
click node_api_client "https://github.com/lordkall/media-app/blob/master/backend/frontend/core/api_client.py"
click node_app "https://github.com/lordkall/media-app/blob/master/backend/app/main.py"
click node_router "https://github.com/lordkall/media-app/blob/master/backend/app/api/v1/router.py"
click node_auth "https://github.com/lordkall/media-app/blob/master/backend/app/api/v1/endpoints/auth.py"
click node_users "https://github.com/lordkall/media-app/blob/master/backend/app/api/v1/endpoints/users.py"
click node_doctors "https://github.com/lordkall/media-app/blob/master/backend/app/api/v1/endpoints/doctors.py"
click node_appointments "https://github.com/lordkall/media-app/blob/master/backend/app/api/v1/endpoints/appointments.py"
click node_assistant "https://github.com/lordkall/media-app/blob/master/backend/app/api/v1/endpoints/assistant.py"
click node_admin "https://github.com/lordkall/media-app/blob/master/backend/app/api/v1/endpoints/admin.py"
click node_subscriptions "https://github.com/lordkall/media-app/blob/master/backend/app/core/subscription_service.py"
click node_other_api "https://github.com/lordkall/media-app/tree/master/backend/app/api/v1/endpoints"
click node_db_session "https://github.com/lordkall/media-app/blob/master/backend/app/core/database.py"
click node_user_model "https://github.com/lordkall/media-app/blob/master/backend/app/models/users.py"
click node_doctor_model "https://github.com/lordkall/media-app/blob/master/backend/app/models/doctors.py"
click node_appointment_model "https://github.com/lordkall/media-app/blob/master/backend/app/models/appointments.py"
click node_clinic_model "https://github.com/lordkall/media-app/blob/master/backend/app/models/clinics.py"
click node_subscription_model "https://github.com/lordkall/media-app/blob/master/backend/app/models/subscriptions.py"
click node_notification_model "https://github.com/lordkall/media-app/blob/master/backend/app/models/notifications.py"
click node_firebase "https://github.com/lordkall/media-app/blob/master/backend/app/core/firebase.py"
click node_tasks "https://github.com/lordkall/media-app/tree/master/backend/app/tasks"

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_flet,node_home,node_api_client,node_user toneBlue
class node_app,node_router toneAmber
class node_auth,node_users,node_doctors,node_appointments,node_assistant,node_admin,node_subscriptions,node_other_api toneMint
class node_db_session,node_user_model,node_doctor_model,node_appointment_model,node_clinic_model,node_subscription_model,node_notification_model toneRose
class node_firebase,node_tasks toneIndigo
```

## Components

### Client

- [Flet application](https://github.com/lordkall/media-app/blob/master/backend/frontend/main.py): `backend/frontend/main.py`
- [Home and navigation](https://github.com/lordkall/media-app/blob/master/backend/frontend/views/home.py): `backend/frontend/views/home.py`
- [API client](https://github.com/lordkall/media-app/blob/master/backend/frontend/core/api_client.py): `backend/frontend/core/api_client.py`

### API

- [FastAPI application](https://github.com/lordkall/media-app/blob/master/backend/app/main.py): `backend/app/main.py`
- [API router](https://github.com/lordkall/media-app/blob/master/backend/app/api/v1/router.py): `backend/app/api/v1/router.py`

### Domain services

- [Authentication](https://github.com/lordkall/media-app/blob/master/backend/app/api/v1/endpoints/auth.py): `backend/app/api/v1/endpoints/auth.py`
- [User accounts](https://github.com/lordkall/media-app/blob/master/backend/app/api/v1/endpoints/users.py): `backend/app/api/v1/endpoints/users.py`
- [Doctor directory](https://github.com/lordkall/media-app/blob/master/backend/app/api/v1/endpoints/doctors.py): `backend/app/api/v1/endpoints/doctors.py`
- [Appointments](https://github.com/lordkall/media-app/blob/master/backend/app/api/v1/endpoints/appointments.py): `backend/app/api/v1/endpoints/appointments.py`
- [Assistant features](https://github.com/lordkall/media-app/blob/master/backend/app/api/v1/endpoints/assistant.py): `backend/app/api/v1/endpoints/assistant.py`
- [Administration](https://github.com/lordkall/media-app/blob/master/backend/app/api/v1/endpoints/admin.py): `backend/app/api/v1/endpoints/admin.py`
- [Subscriptions](https://github.com/lordkall/media-app/blob/master/backend/app/core/subscription_service.py): `backend/app/core/subscription_service.py`
- [Additional API features](https://github.com/lordkall/media-app/tree/master/backend/app/api/v1/endpoints): `backend/app/api/v1/endpoints`

### Data layer

- [Database sessions](https://github.com/lordkall/media-app/blob/master/backend/app/core/database.py): `backend/app/core/database.py`
- [User records](https://github.com/lordkall/media-app/blob/master/backend/app/models/users.py): `backend/app/models/users.py`
- [Doctor records](https://github.com/lordkall/media-app/blob/master/backend/app/models/doctors.py): `backend/app/models/doctors.py`
- [Appointment records](https://github.com/lordkall/media-app/blob/master/backend/app/models/appointments.py): `backend/app/models/appointments.py`
- [Clinic records](https://github.com/lordkall/media-app/blob/master/backend/app/models/clinics.py): `backend/app/models/clinics.py`
- [Subscription records](https://github.com/lordkall/media-app/blob/master/backend/app/models/subscriptions.py): `backend/app/models/subscriptions.py`
- [Notifications](https://github.com/lordkall/media-app/blob/master/backend/app/models/notifications.py): `backend/app/models/notifications.py`

### Background services

- [Push notifications](https://github.com/lordkall/media-app/blob/master/backend/app/core/firebase.py): `backend/app/core/firebase.py`
- [Scheduled tasks](https://github.com/lordkall/media-app/tree/master/backend/app/tasks): `backend/app/tasks`

### Other components

- **App user**

## Connections

- App user → Flet application: uses
- Flet application → Home and navigation: opens (evidence: `backend/frontend/main.py`)
- Flet application → API client: configures (evidence: `backend/frontend/core/api_client.py`)
- Flet application → User accounts: requests profile (evidence: `backend/frontend/main.py`)
- FastAPI application → API router: mounts (evidence: `backend/app/main.py`)
- API router → Authentication: routes to (evidence: `backend/app/api/v1/router.py`)
- API router → User accounts: routes to (evidence: `backend/app/api/v1/router.py`)
- API router → Doctor directory: routes to (evidence: `backend/app/api/v1/router.py`)
- API router → Appointments: routes to (evidence: `backend/app/api/v1/router.py`)
- API router → Assistant features: routes to (evidence: `backend/app/api/v1/router.py`)
- API router → Administration: routes to (evidence: `backend/app/api/v1/router.py`)
- API router → Subscriptions: routes to (evidence: `backend/app/api/v1/router.py`)
- API router → Additional API features: routes to (evidence: `backend/app/api/v1/router.py`)
- Authentication → Database sessions: uses sessions (evidence: `backend/app/api/v1/endpoints/auth.py`)
- User accounts → Database sessions: uses sessions
- Doctor directory → Database sessions: uses sessions
- Appointments → Database sessions: uses sessions
- Assistant features → Database sessions: uses sessions (evidence: `backend/app/api/v1/endpoints/assistant.py`)
- Administration → Database sessions: uses sessions (evidence: `backend/app/api/v1/endpoints/admin.py`)
- Subscriptions → User records: reads and updates (evidence: `backend/app/core/subscription_service.py`)
- Subscriptions → Doctor records: reads and updates (evidence: `backend/app/core/subscription_service.py`)
- Subscriptions → Clinic records: reads and updates (evidence: `backend/app/core/subscription_service.py`)
- Subscriptions → Subscription records: creates and updates (evidence: `backend/app/core/subscription_service.py`)
- Subscriptions → Notifications: creates notices (evidence: `backend/app/core/subscription_service.py`)
- Assistant features → Appointment records: reads (evidence: `backend/app/api/v1/endpoints/assistant.py`)
- Assistant features → Doctor records: reads (evidence: `backend/app/api/v1/endpoints/assistant.py`)
- Appointments → Appointment records: uses records (evidence: `backend/app/api/v1/endpoints/appointments.py`)
- Appointments → Doctor records: uses records (evidence: `backend/app/api/v1/endpoints/appointments.py`)
- Appointments → User records: uses records (evidence: `backend/app/api/v1/endpoints/appointments.py`)
- Appointments → Clinic records: uses records (evidence: `backend/app/api/v1/endpoints/appointments.py`)
- FastAPI application → Scheduled tasks: starts jobs (evidence: `backend/app/main.py`)
- Notifications → Push notifications: sends push (evidence: `backend/app/models/notifications.py`)
