Skip to content

ianmora97/api-impositus

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

API Impositus | DB Admin and Documents Processor Server

Descripcion

API Impositus es una API RESTful que permite la administración de documentos y la gestión de bases de datos. Esta API está diseñada para facilitar la creación, lectura, actualización y eliminación de documentos en una base de datos, así como la gestión de usuarios y roles. Administra tambien los documentos de los usuarios, permitiendo la carga y descarga de archivos. La API también incluye un sistema de autenticación y autorización para garantizar la seguridad de los datos. Cuenta con un sistema de notificaciones por correo electrónico para informar a los usuarios sobre eventos importantes relacionados con sus documentos. Procesa documentos por medio de OpenAI, permitiendo la generación de documentos a partir de plantillas y la extracción de datos relevantes de los mismos.

Requisitos

  • Node.js
  • Express
  • AWS SDK
  • sequelize
  • multer
  • uuid
  • nodemailer
  • redis

AWS

Esta API utiliza varios servicios de AWS para su funcionamiento. Utiliza S3 para el almacenamiento de documentos y DynamoDB para la gestión de datos. La API está diseñada para ser escalable y eficiente, aprovechando la infraestructura de AWS para garantizar un rendimiento óptimo. A continuación se detallan los servicios utilizados:

  • S3: Almacenamiento de documentos
  • DynamoDB: Gestión de datos

Dynamo Database

La API utiliza una base de datos SQL para almacenar la información de los usuarios, roles y documentos.

Tablas

  • users: Almacena la información de los usuarios, incluyendo su nombre, correo electrónico y contraseña.
  • roles: Almacena la información de los roles, incluyendo su nombre y permisos.
  • documents: Almacena la información de los documentos, incluyendo su nombre, tipo y ubicación en S3.
  • misdocumentos: Almacena la información de los documentos de los usuarios.

PostgresSQL

La API utiliza una base de datos PostgreSQL para almacenar los vectores de los documentos. Esta base de datos es utilizada para la búsqueda y recuperación de documentos, así como para la gestión de usuarios y roles. Se usa OpenAI para la generación de vectores a partir de los documentos, lo que permite una búsqueda eficiente y precisa.

Redis

La API utiliza Redis para el almacenamiento en caché de los datos. Esto permite una recuperación rápida de la información y mejora el rendimiento general de la API.


Carga de Documentos

El servidor permite la carga de documentos en varios formatos, incluyendo:

  • PDF
  • DOCX
  • txt

Los documentos se cargan a través de una solicitud POST a la ruta /api/v1/**, donde se envía el archivo y la información del usuario. La API procesa el documento y lo almacena en S3, generando un enlace de descarga que se devuelve al usuario. La API también genera un vector del documento utilizando OpenAI, lo que permite una búsqueda eficiente y precisa de los documentos.

Se utiliza Multer para la carga de archivos y se almacena el archivo en S3. La API también incluye un sistema de autenticación y autorización para garantizar la seguridad de los datos.

impositus-api/
│
├── src/
│   ├── index.js                  # Punto de entrada del servidor
│   ├── app.js                    # Configuración Express, middlewares globales
│
│   ├── config/                   # Configuración de servicios
│   │   ├── aws.js                # Conexión AWS (S3, DynamoDB)
│   │   ├── redis.js              # Cliente Redis
│   │   ├── pg.js                 # Cliente PostgreSQL
│   │   └── openai.js             # Cliente OpenAI
│
│   ├── routes/                   # Rutas del API
│   │   ├── documents.routes.js
│   │   ├── upload.routes.js
│   │   ├── search.routes.js
│   │   └── users.routes.js
│
│   ├── controllers/              # Lógica por endpoint
│   │   ├── documents.controller.js
│   │   ├── upload.controller.js
│   │   ├── search.controller.js
│   │   └── users.controller.js
│
│   ├── services/                 # Servicios conectados a AWS, DB, Redis, OpenAI
│   │   ├── s3.service.js
│   │   ├── dynamodb.service.js
│   │   ├── redis.service.js
│   │   ├── pg.service.js
│   │   ├── openai.service.js
│   │   └── embedding.service.js
│
│   ├── middlewares/
│   │   ├── auth.middleware.js
│   │   ├── errorHandler.js
│   │   └── upload.middleware.js
│
│   ├── utils/
│   │   ├── parser.js              # Procesamiento de texto de PDF/DOCX
│   │   └── helper.js
│
│   └── models/                   # Estructuras para Dynamo, opcional para ORM
│       ├── user.model.js
│       ├── role.model.js
│       └── document.model.js
│
├── uploads/                      # Carpeta temporal si se usa almacenamiento local
├── scripts/                      # Scripts utilitarios: generación de embeddings, etc
├── .env
├── package.json
└── README.md

About

API para impositus

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors