# ispc-soluciones/bienestar-plus architecture

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

- Interactive diagram: https://gitdiagram.com/ispc-soluciones/bienestar-plus
- Repository: https://github.com/ispc-soluciones/bienestar-plus

## Overview

Bienestar Plus is an integral-wellness web app. Users register or log in, then manage habits, exercise routines, hydration, sleep progress, nutrition plans and personal profiles; they can also browse health resources and receive notifications. The Angular UI routes requests through feature services to a Django REST backend, which handles domain logic and persistence. The README documents meditation and breathing exercises, personalized reminders, progress statistics and authentication. Some backend routes and storage details are unsampled, so those connections are omitted or marked unverified.

Main entry points: [`backend/bienestar/views.py`](https://github.com/ispc-soluciones/bienestar-plus/blob/main/backend/bienestar/views.py) (API views), [`frontend/src/app/app.routes.ts`](https://github.com/ispc-soluciones/bienestar-plus/blob/main/frontend/src/app/app.routes.ts) (App routes), [`frontend/src/app/services`](https://github.com/ispc-soluciones/bienestar-plus/tree/main/frontend/src/app/services) (Wellness services), [`frontend/src/app/pages/plan-nutricional/plan-nutricional.ts`](https://github.com/ispc-soluciones/bienestar-plus/blob/main/frontend/src/app/pages/plan-nutricional/plan-nutricional.ts) (Nutrition plan)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["User experience"]
  node_routes["App routes<br/>[app.routes.ts]"]
  node_registration["Registration<br/>[registro.ts]"]
  node_login["Login<br/>[login.ts]"]
end

subgraph group_wellness["Wellness features"]
  node_habits["Habits<br/>[habitos.ts]"]
  node_profile["Profile<br/>[perfil.ts]"]
  node_nutrition["Nutrition plan"]
  node_wellness_services["Wellness services"]
  node_models["Domain models"]
end

subgraph group_backend["Backend API"]
  node_api_urls["API routing<br/>[urls.py]"]
  node_views["API views<br/>[views.py]"]
  node_hydration_api["Hydration API<br/>[hydration_views.py]"]
  node_nutrition_api["Nutrition API<br/>[nutrition_views.py]"]
  node_serializers["Serializers<br/>[serializers.py]"]
  node_domain_data[("Domain records<br/>[models.py]")]
  node_mongo[("Mongo storage<br/>[mongo.py]")]
end

subgraph group_engagement["Content and notifications"]
  node_news["News service<br/>[news.py]"]
  node_resources["Resource service"]
  node_notifications["Notifications<br/>[notificaciones.ts]"]
  node_websocket["Notification socket<br/>[consumers.py]"]
  node_email["Email service<br/>[email.py]"]
end

node_user(("User"))
node_external_api(("External news"))

node_user -->|"opens app"| node_routes
node_routes -->|"routes to"| node_registration
node_routes -->|"routes to"| node_login
node_routes -->|"routes to"| node_habits
node_routes -->|"routes to"| node_profile
node_habits -->|"uses"| node_wellness_services
node_profile -->|"uses"| node_wellness_services
node_habits -->|"renders"| node_nutrition
node_profile -->|"renders"| node_nutrition
node_nutrition -->|"uses"| node_wellness_services
node_nutrition -->|"uses"| node_models
node_registration -->|"uses auth"| node_login
node_login -->|"uses"| node_wellness_services
node_resources -.->|"requests resources"| node_external_api
node_api_urls -->|"routes requests"| node_views
node_views -->|"serializes"| node_serializers
node_serializers -->|"serializes records"| node_domain_data
node_views -->|"reads and writes"| node_domain_data
node_views -->|"stores files"| node_mongo
node_views -->|"gets news"| node_news
node_views -->|"sends email"| node_email
node_news -.->|"fetches articles"| node_external_api
node_notifications -.->|"connects"| node_websocket
node_hydration_api -.->|"persists hydration"| node_domain_data
node_nutrition_api -.->|"persists plans"| node_domain_data
node_wellness_services -.->|"calls backend"| node_api_urls

click node_routes "https://github.com/ispc-soluciones/bienestar-plus/blob/main/frontend/src/app/app.routes.ts"
click node_registration "https://github.com/ispc-soluciones/bienestar-plus/blob/main/frontend/src/app/pages/registro/registro.ts"
click node_login "https://github.com/ispc-soluciones/bienestar-plus/blob/main/frontend/src/app/pages/login/login.ts"
click node_habits "https://github.com/ispc-soluciones/bienestar-plus/blob/main/frontend/src/app/pages/habitos/habitos.ts"
click node_profile "https://github.com/ispc-soluciones/bienestar-plus/blob/main/frontend/src/app/pages/perfil/perfil.ts"
click node_nutrition "https://github.com/ispc-soluciones/bienestar-plus/blob/main/frontend/src/app/pages/plan-nutricional/plan-nutricional.ts"
click node_wellness_services "https://github.com/ispc-soluciones/bienestar-plus/tree/main/frontend/src/app/services"
click node_models "https://github.com/ispc-soluciones/bienestar-plus/tree/main/frontend/src/app/models"
click node_news "https://github.com/ispc-soluciones/bienestar-plus/blob/main/backend/bienestar/services/news.py"
click node_resources "https://github.com/ispc-soluciones/bienestar-plus/blob/main/frontend/src/app/services/recursos.service.ts"
click node_notifications "https://github.com/ispc-soluciones/bienestar-plus/blob/main/frontend/src/app/services/notificaciones.ts"
click node_websocket "https://github.com/ispc-soluciones/bienestar-plus/blob/main/backend/bienestar/consumers.py"
click node_api_urls "https://github.com/ispc-soluciones/bienestar-plus/blob/main/backend/bienestar_plus_api/urls.py"
click node_views "https://github.com/ispc-soluciones/bienestar-plus/blob/main/backend/bienestar/views.py"
click node_hydration_api "https://github.com/ispc-soluciones/bienestar-plus/blob/main/backend/bienestar/hydration_views.py"
click node_nutrition_api "https://github.com/ispc-soluciones/bienestar-plus/blob/main/backend/bienestar/nutrition_views.py"
click node_serializers "https://github.com/ispc-soluciones/bienestar-plus/blob/main/backend/bienestar/serializers.py"
click node_domain_data "https://github.com/ispc-soluciones/bienestar-plus/blob/main/backend/bienestar/models.py"
click node_mongo "https://github.com/ispc-soluciones/bienestar-plus/blob/main/backend/bienestar/mongo.py"
click node_email "https://github.com/ispc-soluciones/bienestar-plus/blob/main/backend/bienestar/services/email.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_routes,node_registration,node_login,node_user toneBlue
class node_habits,node_profile,node_nutrition,node_wellness_services,node_models toneAmber
class node_api_urls,node_views,node_hydration_api,node_nutrition_api,node_serializers,node_domain_data,node_mongo toneMint
class node_news,node_resources,node_notifications,node_websocket,node_email toneRose
class node_external_api toneIndigo
```

## Components

### User experience

- [App routes](https://github.com/ispc-soluciones/bienestar-plus/blob/main/frontend/src/app/app.routes.ts): `frontend/src/app/app.routes.ts`
- [Registration](https://github.com/ispc-soluciones/bienestar-plus/blob/main/frontend/src/app/pages/registro/registro.ts): `frontend/src/app/pages/registro/registro.ts`
- [Login](https://github.com/ispc-soluciones/bienestar-plus/blob/main/frontend/src/app/pages/login/login.ts): `frontend/src/app/pages/login/login.ts`

### Wellness features

- [Habits](https://github.com/ispc-soluciones/bienestar-plus/blob/main/frontend/src/app/pages/habitos/habitos.ts): `frontend/src/app/pages/habitos/habitos.ts`
- [Profile](https://github.com/ispc-soluciones/bienestar-plus/blob/main/frontend/src/app/pages/perfil/perfil.ts): `frontend/src/app/pages/perfil/perfil.ts`
- [Nutrition plan](https://github.com/ispc-soluciones/bienestar-plus/blob/main/frontend/src/app/pages/plan-nutricional/plan-nutricional.ts): `frontend/src/app/pages/plan-nutricional/plan-nutricional.ts`
- [Wellness services](https://github.com/ispc-soluciones/bienestar-plus/tree/main/frontend/src/app/services): `frontend/src/app/services`
- [Domain models](https://github.com/ispc-soluciones/bienestar-plus/tree/main/frontend/src/app/models): `frontend/src/app/models`

### Backend API

- [API routing](https://github.com/ispc-soluciones/bienestar-plus/blob/main/backend/bienestar_plus_api/urls.py): `backend/bienestar_plus_api/urls.py`
- [API views](https://github.com/ispc-soluciones/bienestar-plus/blob/main/backend/bienestar/views.py): `backend/bienestar/views.py`
- [Hydration API](https://github.com/ispc-soluciones/bienestar-plus/blob/main/backend/bienestar/hydration_views.py): `backend/bienestar/hydration_views.py`
- [Nutrition API](https://github.com/ispc-soluciones/bienestar-plus/blob/main/backend/bienestar/nutrition_views.py): `backend/bienestar/nutrition_views.py`
- [Serializers](https://github.com/ispc-soluciones/bienestar-plus/blob/main/backend/bienestar/serializers.py): `backend/bienestar/serializers.py`
- [Domain records](https://github.com/ispc-soluciones/bienestar-plus/blob/main/backend/bienestar/models.py): `backend/bienestar/models.py`
- [Mongo storage](https://github.com/ispc-soluciones/bienestar-plus/blob/main/backend/bienestar/mongo.py): `backend/bienestar/mongo.py`

### Content and notifications

- [News service](https://github.com/ispc-soluciones/bienestar-plus/blob/main/backend/bienestar/services/news.py): `backend/bienestar/services/news.py`
- [Resource service](https://github.com/ispc-soluciones/bienestar-plus/blob/main/frontend/src/app/services/recursos.service.ts): `frontend/src/app/services/recursos.service.ts`
- [Notifications](https://github.com/ispc-soluciones/bienestar-plus/blob/main/frontend/src/app/services/notificaciones.ts): `frontend/src/app/services/notificaciones.ts`
- [Notification socket](https://github.com/ispc-soluciones/bienestar-plus/blob/main/backend/bienestar/consumers.py): `backend/bienestar/consumers.py`
- [Email service](https://github.com/ispc-soluciones/bienestar-plus/blob/main/backend/bienestar/services/email.py): `backend/bienestar/services/email.py`

### Other components

- **User**
- **External news**

## Connections

- User → App routes: opens app (evidence: `frontend/src/app/app.routes.ts`)
- App routes → Registration: routes to (evidence: `frontend/src/app/app.routes.ts`)
- App routes → Login: routes to (evidence: `frontend/src/app/app.routes.ts`)
- App routes → Habits: routes to (evidence: `frontend/src/app/app.routes.ts`)
- App routes → Profile: routes to (evidence: `frontend/src/app/app.routes.ts`)
- Habits → Wellness services: uses (evidence: `frontend/src/app/pages/habitos/habitos.ts`)
- Profile → Wellness services: uses (evidence: `frontend/src/app/pages/perfil/perfil.ts`)
- Habits → Nutrition plan: renders (evidence: `frontend/src/app/pages/habitos/habitos.ts`)
- Profile → Nutrition plan: renders (evidence: `frontend/src/app/pages/perfil/perfil.ts`)
- Nutrition plan → Wellness services: uses (evidence: `frontend/src/app/pages/plan-nutricional/plan-nutricional.ts`)
- Nutrition plan → Domain models: uses (evidence: `frontend/src/app/pages/plan-nutricional/plan-nutricional.ts`)
- Registration → Login: uses auth (evidence: `frontend/src/app/pages/registro/registro.ts`)
- Login → Wellness services: uses (evidence: `frontend/src/app/pages/login/login.ts`)
- Resource service → External news: requests resources
- API routing → API views: routes requests (evidence: `backend/bienestar_plus_api/urls.py`)
- API views → Serializers: serializes (evidence: `backend/bienestar/views.py`)
- Serializers → Domain records: serializes records (evidence: `backend/bienestar/serializers.py`)
- API views → Domain records: reads and writes (evidence: `backend/bienestar/views.py`)
- API views → Mongo storage: stores files (evidence: `backend/bienestar/views.py`)
- API views → News service: gets news (evidence: `backend/bienestar/views.py`)
- API views → Email service: sends email (evidence: `backend/bienestar/views.py`)
- News service → External news: fetches articles
- Notifications → Notification socket: connects
- Hydration API → Domain records: persists hydration
- Nutrition API → Domain records: persists plans
- Wellness services → API routing: calls backend
