Logo Listen To Me
API LISTEN TO ME

API Listen To Me — Node.js + PostgreSQL

API REST para una app de terapeutas y pacientes. Provee autenticación, perfiles, gestión de sesiones, agenda y notas clínicas. Construida con Node.js y PostgreSQL, con diseño escalable y documentación OpenAPI.

Resumen del proyecto API clínica para conectar terapeutas con pacientes. Incluye JWT, RBAC, validación de entrada, migraciones, logs estructurados y CI/CD. Persistencia en PostgreSQL; caching y rate limiting opcional.

Stack y características

Stack: Node.js (Express/NestJS), PostgreSQL, ORM (Prisma/TypeORM), Jest, Docker, OpenAPI/Swagger.

Dominios: autenticación y usuarios, perfiles de terapeuta/paciente, sesiones y notas, agenda/availability, notificaciones y adjuntos básicos.

Calidad: arquitectura modular, validación, manejo centralizado de errores y monitorización.

Contacto

Tecnologías

Node.js
PostgreSQL
JWT / RBAC
Express / JavaScript

API — Rutas Backend de la app de terapeutas (Node.js + PostgreSQL). Todas las respuestas son JSON.

Base URL & Headers

  • Producción: https://api.tu-dominio.com
  • Desarrollo: http://localhost:3000
  • Headers: Content-Type: application/json y Authorization: Bearer <token> (cuando aplique)

Autenticación y Cuentas

POST /SingIn

Body:
{ "email": "user@dominio.com", "password": "****" }

200 OK:
{ "token": "jwt", "user": { "id": "uid", "role": "patient|therapist|admin" } }

POST /CreateUsers

Body:
{ "name": "Texto", "email": "user@dominio.com", "password": "****", "role": "patient|therapist" }

201 Created:
{ "id": "uid", "name": "Texto", "email": "user@dominio.com", "role": "patient" }

GET /GetByIdUser/:id

200 OK:
{ "id": "uid", "name": "Texto", "email": "user@dominio.com", "role": "patient" }

Terapeutas

GET /getTherapist

200 OK:
[
  { "id": "t1", "name": "Nombre", "speciality": "Ansiedad", "rating": 4.8 },
  ...
]

GET /getTherapist/:id

200 OK:
{
  "id": "t1",
  "name": "Nombre",
  "bio": "Perfil breve",
  "speciality": "Depresión",
  "availability": ["2025-10-30T15:00:00Z", "..."]
}

Preguntas y Respuestas

GET /getQuestions

200 OK:
[
  { "id": "q1", "text": "¿Cómo te sientes hoy?", "type": "likert" },
  ...
]

POST /postQuestions

Body:
{ "userId": "uid", "answers": [ { "questionId": "q1", "value": 4 } ] }

201 Created:
{ "saved": true, "count": 1 }

Aplicaciones / Solicitudes

POST /getApplications

Body (opcional):
{ "userId": "uid", "status": "pending|approved|rejected" }

200 OK:
[
  { "id": "a1", "userId": "uid", "status": "pending", "createdAt": "2025-10-28T00:00:00Z" }
]

Mensajería y Conversaciones

POST /createConversation

Body:
{ "userId": "uid", "therapistId": "t1" }

201 Created:
{ "conversationId": "c1", "participants": ["uid", "t1"] }

POST /getConversationsByUserId

Body:
{ "userId": "uid" }

200 OK:
[ { "id": "c1", "lastMessageAt": "2025-10-28T12:00:00Z" } ]

POST /sendMessage

Body:
{ "conversationId": "c1", "senderId": "uid", "text": "Hola" }

201 Created:
{ "messageId": "m1", "createdAt": "2025-10-28T12:01:00Z" }

GET /getMessagesByConversationId/:id

200 OK:
[
  { "id": "m1", "senderId": "uid", "text": "Hola", "createdAt": "2025-10-28T12:01:00Z" }
]

Códigos de estado & Errores

  • HTTP: 200 OK, 201 Created, 400 Bad Request, 401 Unauthorized, 403 Forbidden, 404 Not Found, 500 Server Error.
  • Errores (shape): { "error": "CODE", "message": "texto" }
  • Fechas: ISO8601
  • Paginación (si aplica): ?page=1&pageSize=20
Rutas principales y casos de uso resumidos.
Agenda

Agenda y disponibilidad

GET /availability, POST /appointments, recordatorios básicos y cancelaciones. Pensado para integrarse con apps móviles y web.

Flujos de agenda

Contacto ¿Buscas una API similar o integración con tu app? Escríbeme.