Skip to content

Este es un ejemplo práctico de una "red social" en la cual se pueden crear usuarios, publicaciones, darles like y comentar.

License

Notifications You must be signed in to change notification settings

yumikodev/social-network-api

Repository files navigation

Social Network (API)

Este es un ejemplo práctico una "red social" en la cual se pueden crear usuarios, publicaciones, darles like y comentar.

Esta es solo la API, en esta se usaron las siguientes tecnologías: NestJS, Prisma (SQLite), JWT (Autenticación)

Tabla de contenido:

Inicialización

Para iniciar el proyecto, obviamente hay que configurar algunas cosas, compilar, etc. Aquí verás los comandos básicos.

Eres libre de usar el gestro de paquetes de tu gusto (Yarn, PNPM, etc).

Instalar dependencias

npm install

Variables de entorno

Copia y pega el contenido dentro de .env.example en un nuevo archivo .env;

DATABASE_URL="file:./dev.db"
ACCESS_SECRET="mysecretkey" // Change this

Migración (Prisma)

npx prisma migrate dev --name init

Iniciar en modo desarrollo

npm run start:dev

Rutas protegidas

Existen rutas protegidas, para acceder a ellas se les debe pasar un Header al momento de hacer una petición.

Authorization: Bearer <token>

Usted reemplazaría <token> por el token que se obtiene al crear una cuenta o iniciar sesión.

En el caso que no se agregue ese Header a la petición, el token esté expirado/malformado o el contenido del Header sea inválido, el servidor responderá con un código 401Unauthorized

Endpoints

  • /auth

    • (POST) /login: Iniciar sesión

      Body:

      {
        "email": "...",
        "password": "****"
      }
    • (POST) /register: Crear cuenta.

      Body:

      {
        "username": "...",
        "email": "...",
        "password": "****"
      }
  • /users

    • (GET) /profile: Obtener el perfil actual.
    • (GET) /:id: Obtiene el perfíl de un usuario (por id).
    • (DELETE) /profile: Elimina la cuenta actual.
  • /posts

    • (GET) /: Obtiene todos los posts.

      Esta ruta tiene paginación, debera de pasarle algúnos parámetros de busqueda.

      Representación en json:

      {
        "page": 1, // Indica cuál es la página.
        "limit": 10, // El límite de publicaciones por página.
        "userId": "...", // (Opcional) Filtra publicaciones de un usuario
      }
    • (GET) /:id: Obtiene una publicación por id.

    • (GET) /:id/like: Si es que se le dió like a la publicación.

    • (POST) /:id/like: Alterna el like a una publicación.

    • (GET) /:id/comments: Recupera los comentarios a una publicación.

    • (POST) /:id/comments: Crea un comentario.

      Body:

      {
        "content": "..."
      }
    • (POST) /: Crea una publicación.

      Body:

      {
        "content": "..."
      }
    • (PATCH) /:id: Edita la publicación.

      Body:

      {
        "content": "..."
      }
    • (DELETE) /:id: Elimina la publicación.

About

Este es un ejemplo práctico de una "red social" en la cual se pueden crear usuarios, publicaciones, darles like y comentar.

Resources

License

Stars

Watchers

Forks