Innovación en Tecnologías de la Información para Soluciones Empresariales Avanzadas
- Introducción
- Visión
- Misión
- Valores
- 📌 Proyecto Monarca
- 🚀 Guía de Inicialización
- 🧪 Pruebas
- 📑 Documentación API
Bienvenido al repositorio oficial de 02 Solutions, una compañía especializada en el desarrollo de soluciones avanzadas de tecnologías de la información, dedicada a impulsar la transformación digital de las empresas a través de herramientas innovadoras, escalables y personalizables.
Este repositorio forma parte de Proyecto Monarca, una iniciativa estratégica diseñada para revolucionar la gestión de viajes empresariales mediante una plataforma integral, segura y altamente adaptable.
“Convertirnos en líderes globales en el desarrollo de soluciones tecnológicas innovadoras, flexibles y escalables, que impulsen la transformación digital y la eficiencia operativa de empresas en diversas industrias.”
Esta visión guía nuestro crecimiento y nos motiva a innovar continuamente en la creación de herramientas tecnológicas que aporten valor real a nuestros clientes.
“Diseñar e implementar soluciones avanzadas de tecnologías de la información que optimicen procesos empresariales, fomenten la innovación y generen un impacto positivo y sostenible en las organizaciones.”
Nuestra misión impulsa el desarrollo de plataformas personalizables y escalables, orientadas a resolver desafíos empresariales complejos a través de la tecnología.
En 02 Solutions, nuestros valores son el cimiento de cada decisión y desarrollo que llevamos a cabo:
- Innovación: Buscamos soluciones disruptivas y creativas que resuelvan desafíos reales.
- Flexibilidad: Nos adaptamos a las necesidades específicas de cada cliente, sin restricciones rígidas.
- Transparencia: Fomentamos una comunicación clara y abierta, tanto interna como externamente.
- Colaboración: Creemos en el trabajo en equipo como motor clave para lograr grandes resultados.
- Calidad: Nos comprometemos a ofrecer productos y servicios con los más altos estándares.
- Seguridad: Protegemos la información y los datos con protocolos sólidos y actualizados.
- Compromiso: Trabajamos con dedicación y responsabilidad para alcanzar nuestros objetivos comunes.
¿Por qué "Monarca"?
El nombre hace referencia a las icónicas migraciones de las mariposas monarca, que recorren miles de kilómetros en un viaje complejo y perfectamente coordinado. Este paralelismo representa la esencia del proyecto: facilitar, optimizar y coordinar los viajes empresariales con la misma precisión y fluidez que las migraciones de estas mariposas.
Monarca refleja nuestro compromiso por crear soluciones que no solo optimicen procesos, sino que también brinden experiencias fluidas y eficientes para todos los usuarios involucrados.
Esta plataforma actuará como nuestro "Single Repository of Truth", garantizando que toda la información oficial y decisiones relevantes estén centralizadas y accesibles para todos los miembros del equipo.
La gestión de viajes corporativos suele estar limitada por sistemas costosos, inflexibles y difíciles de personalizar. Nuestra misión con Monarca es cambiar esa narrativa, creando una solución tecnológica libre de estas barreras, capaz de adaptarse a las necesidades específicas de cada organización.
Framework: NestJS
Base de datos: PostgreSQL
ORM: TypeORM
Autenticación: JWT
Estructura de carpetas: modular (cada dominio en su propio módulo)
src/
├─ auth/ # Login, registro, refresh tokens
├─ jwt/ # Estrategias y guards de JWT
├─ guards/ # Guards genéricos (RolesGuard, etc.)
├─ users/ # CRUD de usuarios
├─ roles/ # Gestión de roles y permisos
├─ departments/ # Unidades organizacionales
├─ cost-centers/ # Centros de costo, asignaciones presupuestales
├─ travel-agencies/ # Agencias de viaje externas
├─ destinations/ # Ciudades y destinos disponibles
├─ requests/ # Solicitudes de viaje
├─ revisions/ # Flujos de aprobación y revisiones
├─ reservations/ # Reservaciones (hoteles, vuelos)
├─ vouchers/ # Vales / comprobantes
├─ request-logs/ # Historial de acciones sobre solicitudes
├─ user-logs/ # Historial de actividad de usuarios
├─ utils/ # Helpers, filtros, pipes
├─ app.module.ts # Módulo raíz
└─ main.ts # Punto de entrada- Node.js (usamos
nvmpara manejar versiones) npm(Node Package Manager)direnv
Instalar direnv
- macOS:
brew install direnv
Agrega el siguiente hook a tu shell:
# Bash
echo 'eval "$(direnv hook bash)"' >> ~/.bashrc
# Zsh
echo 'eval "$(direnv hook zsh)"' >> ~/.zshrcHabilitar direnv para este repositorio (desde Monarca_Backend/monarca):
direnv allowAl entrar al repositorio, corre
direnv allowsi es la primera vez despues de la descarga.
Instalar nvm y Node.js (solo si no están instalados previamente)
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
source ~/.bashrc # o ~/.zshrc según tu shellDentro de la carpeta Monarca_Backend/monarca corre el siguiente comando para descargar las dependencias necesarias:
npm installPara iniciar el proyecto en modo desarrollo, corre:
npm run start:devCrear un archivo .env con el contenido especificado en el .env.example:
Son credenciales necesarias que la base de datos utiliza
Construir la imagen Docker (solo una vez si no existe):
Desde la terminal, navega al directorio Monarca_Backend/DB y ejecuta el siguiente comando:
docker build -t monarca-v1 .Esto construirá una imagen de Docker llamada monarca-v1, la cual debería aparecer en la sección de Images en Docker Desktop.
Levantar los servicios con Docker Compose:
Desde el root del proyecto Monarca_Backend, ejecuta:
docker compose up -dEsto iniciará los contenedores definidos en el archivo docker-compose.yaml y generará automáticamente una carpeta llamada
postgresdentro deMonarca_Backend/BD, la cual contendrá los datos de la base de datos
Alternativa: también se puede iniciar el contenedor desde Docker Desktop, desde la pestaña Containers y haciendo clic en Start sobre el contenedor correspondiente.
Detener los contenedores
Para detener los contenedores desde la terminal ejecuta:
# Detiene todos los contenedores
docker compose stop
# Alternativa: detener un contenedor específico por su nombre
docker stop <nombre_del_contenedor> # monarca_databaseEsto detiene los contenedores, pero no los elimina ni borra los datos.
También se puede apagar desde Docker Desktop haciendo clic en Stop en la interfaz.
Reiniciar los contenedores detenidos
Para volver a inicializar los contenedores ya creados desde la terminal ejecuta:
# Inicializa todos los contenedores
docker compose start
# Alternativa: inicializar un contenedor específico por su nombre
docker start <nombre_del_contenedor> # monarca_databaseReiniciará todos los contenedores previamente creados por Docker Compose.
También se puede realizar desde Docker Desktop con el botón Start.
Desde la aplicacion de pgAdmin, configura un nuevo servidor con los siguientes parametros:
- Nombre del servidor:
MonarcaDB- (puede ser cualquier otro nombre) - Host:
localhost - Puerto:
25000- (verificar el puerto encompose.yamlsi este no funciona) - Usuario:
postgres- (por defecto, a menos que se indique lo contrario) - Contraseña:
test123- (verificarPOSTGRES_PASSWORDencompose.yamlsi este no funciona)
Acceder directamente a la base de datos desde la terminal de docker:
# docker exec -it <nombre del contenedor> psql -U <usuario DB> -d <nombre de la DB>
docker exec -it monarca_database psql -U postgres -d MonarcaEste comando te da acceso directo a la consola interactiva de PostgreSQL dentro del contenedor de Docker, conectado a la base de datos Monarca como el usuario postgres.
Dentro de la terminal en la carpeta Monarca_Backend/monarca corre el siguiente comando:
npm run db:seedEste comando inserta los dummy data asignados en la carpeta de seed en la base de datos
- Ejecutar la eliminación del contenido actual:
# Si se necesita eliminar todos los datos
npm run db:drop
# si solo se requiere vaciar las tablas
npm run db:truncate- Volver a insertar los datos de prueba (dummy data):
npm run db:seedEstos comandos deben ejecutarse desde la carpeta
Monarca_Backend/monarca.
- Eliminar la carpeta de datos:
Elimina manualmente o desde la terminal la carpeta postgres ubicada en Monarca_Backend/BD
rm -rf Monarca_Backend/BD/postgres- Levantar nuevamente los contenedores:
Desde el root de Monarca_Backend, ejecuta nuevamente
docker compose up -dEsto recreará la base de datos desde cero, incluyendo una nueva carpeta postgres.
- Ejecutar los datos de prueba (dummy data):
Desde la carpeta de Monarca_Backend/monarca, ejecuta:
npm run db:seedInserta nuevamente el dummy data
Para ejecutar las pruebas end-to-end, navega a la carpeta Monarca_Backend/monarca y corre el siguiente comando:
npm run test:e2eLa documentación de los endpoints está disponible en Swagger/OpenAPI.
Para acceder, simplemente visita la URL base donde corre el backend y añade /api al final. Por ejemplo:
// src/users/dto/create-user.dto.ts
/**
* DTO para la creación de un nuevo usuario
*/
import { ApiProperty } from '@nestjs/swagger';
export class CreateUserDto {
@ApiProperty({ example: 'john.doe@example.com', description: 'Correo electrónico del usuario' })
email: string;
@ApiProperty({ example: 'John', description: 'Nombre del usuario' })
firstName: string;
@ApiProperty({ example: 'Doe', description: 'Apellido del usuario' })
lastName: string;
@ApiProperty({ example: 'password123', description: 'Contraseña del usuario' })
password: string;
}