Skip to content

Feed

Endpoints para ver el feed social y contenido de tendencias.

El feed social utiliza los modelos Post, Like, Comment y Follow del schema social. Consulta la documentación de Posts y Seguimientos para ver los modelos completos.

Obtener el feed personalizado para el usuario.

  • URL: /api/v1/social/feed
  • Método: GET
  • Autenticación Requerida:

Este endpoint obtiene el feed personalizado:

  1. Obtiene usuarios seguidos por el usuario autenticado
  2. Si includeOwn es true: Añade su propio userProfileId a la lista
  3. Busca posts donde:
    • userProfileId está en la lista de seguidos
    • isPublic es true
  4. Ordena por createdAt descendente
  5. Aplica paginación
  • includeOwn: Incluir posts propios del usuario (por defecto: true)
  • page: Número de página
  • limit: Resultados por página
{
"data": [
{
"id": "...",
"title": "Morning workout",
"content": "Great session today!",
"imageUrl": "https://...",
"createdAt": "2023-10-27T10:00:00Z",
"userProfile": {
"id": "...",
"name": "John Doe",
"avatar_url": "https://..."
},
"_count": {
"likes": 12,
"comments": 5
}
}
],
"pagination": {
"page": 1,
"limit": 10,
"total": 50,
"totalPages": 5
}
}
import { hcWithType } from '@vitality-gym/api/client'
const client = hcWithType('http://localhost:3000')
const res = await client.api.v1.social.feed.$get({
query: {}
})

Obtener posts populares de los últimos 7 días.

  • URL: /api/v1/social/trending
  • Método: GET
  • Autenticación Requerida:

Este endpoint obtiene posts populares:

  1. Calcula fecha: 7 días atrás

  2. Busca posts donde:

    • isPublic es true
    • createdAt >= 7 días atrás
  3. Ordena por:

    • Primero: Número de likes (descendente)
    • Segundo: createdAt (descendente)
  4. Limita resultados según parámetro (default: 10)

  • limit: Número de posts a retornar (por defecto: 10)
{
"data": [
{
"id": "...",
"title": "Achieved my goal!",
"content": "Finally hit my target weight!",
"imageUrl": "https://...",
"createdAt": "2023-10-25T10:00:00Z",
"userProfile": {
"id": "...",
"name": "Jane Doe"
},
"_count": {
"likes": 150,
"comments": 45
}
}
]
}
import { hcWithType } from '@vitality-gym/api/client'
const client = hcWithType('http://localhost:3000')
const res = await client.api.v1.social.trending.$get({
query: {
limit: '10'
}
})

Obtener posts de usuarios que no sigues.

  • URL: /api/v1/social/discover
  • Método: GET
  • Autenticación Requerida:

Este endpoint obtiene posts para descubrir nuevos usuarios:

  1. Obtiene usuarios seguidos por el usuario autenticado
  2. Busca posts donde:
    • userProfileId NO está en la lista de seguidos
    • userProfileId NO es el usuario actual
    • isPublic es true
  3. Ordena por popularidad (likes) y fecha
  4. Aplica paginación
  • page: Número de página
  • limit: Resultados por página