Laboral.AI B2B conecta empresas con empleados usando inteligencia artificial. Este repositorio contiene el MVP con las siguientes funcionalidades: Login, Registro y Publicación de Empleos. Utilizamos un frontend HTML, CSS y Javascript y un backend basado en Python, Flask con servicios serverless sobre AWS (API Gateway, Lambda, DynamoDB) para proporcionar una solución escalable y flexible. El objetivo del MVP es crear, modificar, listar, y eliminar empleos y usuarios asociados a una empresa, mientras que los datos se almacenan en una base de datos NoSQL utilizando DynamoDB.
$ git clone https://github.com/denzelbautista/mvp-laboral-ai
$ cd mvp-laboral-ai
$ python3 -m venv .venv
Linux/MacOS:
$ source .venv/bin/activate
Windows:
$ .venv\Scripts\activate
$ pip install -r requirements.txt
$ python app.py
Esto levantará el servidor local para visualizar el frontend y poder realizar las pruebas de la API con acciones como registro de empresa, usuario, modificación de empresa, usuario y creación, listado , modificación y eliminación de empleos por parte de una empresa.
- Partition Key (
empresa_id
): Identificador único para la empresa. - Sort Key (
detalle_key
):EMPRESA#{empresa_id}
- Atributos (flexible):
{
"empresa_id": "12345",
"detalle_key": "EMPRESA#12345",
"empresa_datos": {
"nombre": "Empresa XYZ",
"ubicacion": "Lima",
"industria": "Tecnología",
...
}
}
- Partition Key (
empresa_id
):12345
- Sort Key (
detalle_key
):EMPLEO#{empleo_id}
- Atributos (flexible):
{
"empresa_id": "12345",
"detalle_key": "EMPLEO#67890",
"empleo_datos": {
"titulo": "Desarrollador Backend",
"descripcion": "Se busca desarrollador con experiencia en Node.js",
"ubicacion": "Remoto",
"salario": 5000,
...
}
}
- Partition Key (
empresa_id
):12345
- Sort Key (
detalle_key
):USUARIO#{usuario_id}
- Atributos (flexible):
{
"empresa_id": "12345",
"detalle_key": "USUARIO#abcde12345",
"usuario_datos": {
"nombre": "Juan Pérez",
"email": "juan@example.com",
"rol": "Administrador",
...
}
}
Base URL: https://7yvvp7f7s5.execute-api.us-east-1.amazonaws.com/prod/empresa
- URL:
POST /empresa/crear
- Descripción: Crea una empresa.
- Body:
{
"empresa_datos": {
"nombre": "Empresa XYZ",
"ubicacion": "Lima",
"industria": "Tecnología"
}
}
- URL:
PUT /empresa/modificar
- Descripción: Lista todos los empleos asociados a una empresa.
- Body:
{
"empresa_id": "12345",
"empresa_datos": {
"nombre": "Empresa XYA",
"ubicacion": "Puno",
"industria": "Tecnología"
}
}
Base URL: https://dav4oqy7e9.execute-api.us-east-1.amazonaws.com/prod/usuarios
- URL:
POST /usuarios/crear
- Descripción: Crea un nuevo usuario asociado a una empresa.
- Body:
{
"empresa_id": "12345",
"usuario_datos": {
"nombre": "Juan Pérez",
"email": "juan@example.com",
"rol": "Administrador"
}
}
- URL:
POST /usuarios/listartodos
- Descripción: Lista todos los usuarios asociados a una empresa.
- Body:
{}
- URL:
PUT /usuarios/modificar
- Descripción: Modifica un usuario existente.
- Body:
{
"empresa_id": "12345",
"detalle_key": "USUARIO#435312",
"usuario_datos": {
"nombre": "Juan Pérez",
"email": "juan@example.com",
"rol": "Administrador"
}
}
- URL:
DELETE /usuarios/eliminar
- Descripción: Elimina un usuario existente.
- Body:
{
"empresa_id": "12345",
"detalle_key": "USUARIO#435312"
}
Base URL: https://azy1wlrgli.execute-api.us-east-1.amazonaws.com/prod/empleos
- URL:
POST /empleos/crear
- Descripción: Crea un nuevo empleo asociado a una empresa.
- Body:
{
"empresa_id": "12345",
"empleo_datos": {
"titulo": "Desarrollador Backend",
"descripcion": "Se busca desarrollador con experiencia en Node.js",
"ubicacion": "Remoto",
"salario": 5000
}
}
- URL:
POST /empleos/listartodos
- Descripción: Lista todos los empleos asociados en la base de datos.
- Body:
{}
- URL:
POST /empleos/listarporempresa
- Descripción: Lista todos los empleos asociados a una empresa.
- Body:
{
"empresa_id" : "123456"
}
- URL:
PUT /empleos/modificar
- Descripción: Modifica un empleo existente.
- Body:
{
"empresa_id": "12345",
"detalle_key": "EMPLEO#435312",
"empleo_datos": {
"titulo": "Desarrollador Backend",
"descripcion": "Se busca desarrollador con experiencia en Node.js",
"ubicacion": "Remoto",
"salario": 5000
}
}
- URL:
DELETE /empleos/eliminar
- Descripción: Elimina un empleo existente.
- Body:
{
"empresa_id": "12345",
"detalle_key": "EMPLEO#435312"
}
- Escalabilidad: El esquema NoSQL está diseñado para manejar grandes volúmenes de datos y consultas rápidas.
- Flexibilidad: Los atributos son flexibles y se adaptan a cambios en los datos de empresas, empleos y usuarios.
- Desempeño: El uso de claves de partición y ordenamiento optimiza las consultas para operaciones de CRUD eficientes.