Pasos para correr este proyecto:
- Leer el challenge de la siguiente URL: https://github.com/yaperos/app-nodejs-codechallenge/tree/main
- Tener instalado typescript,node, kafka y postgresql dentro del sistema a probar
- Se puede tener instalado postgressql y kafka en docker, descargado el docker-compose.yml de la siguiente URL: https://github.com/yaperos/app-nodejs-codechallenge/blob/main/docker-compose.yml
- Si se va a ejecutar via docker compose ejecutar los siguientes comandos asumiendo que se tenga docker correctamente instalados:
# Ejecucion de los servicios en docker sudo docker-compose -f docker-compose.yml up -d # Ejecucion de la consola interactiva de kafka desplegado sudo docker exec -it challenge_transaction_kafka_1 /bin/bash #Dentro de la consola en docker #Creacion de los topics kafka-topics --create --bootstrap-server localhost:9092 --replication-factor 1 partitions 1 --topic transaction kafka-topics --create --bootstrap-server localhost:9092 --replication-factor 1 partitions 1 --topic antifraud
- correr dentro del proyecto
yarn install
command - Configurar los ambientes en el archivo
.env
- Solo modificar los siguientes enviroments:
# Puerto del API en Node js PORT=3001 #Parametros de conexion de la base de datos Postgresql #Nota: Se debe crear la base de datos dentro de la base de datos bajo el nombre "transaction" PGSQL_DATABASE='antifraud' PGSQL_USERNAME='Coloque su usuario aqui' PGSQL_PASSWORD='Coloque su clave aqui' PGSQL_SYNCHRONIZE='false' PGSQL_LOGGING='false' PGSQL_HOST='localhost' PGSQL_PORT=5432 #Parametros de conexion de kafka KAFKA_CLIENT_ID='api-antifraud' KAFKA_BROKERS='localhost:9092' KAFKA_GROUP_ID='transaction-group' KAFKA_CONSUMER_ID='transaction'
- Correr las migraciones
yarn migration:ts
- Correr el ambiente de pruebas
yarn nodemon
- ir a un navegador y ejecutar la URL: http://localhost:3001 y asi subscribir a el canal de kafka transaction, solo se requiere una vez
- Diagrama de componentes de conexion de los adaptadores de Kafka en cada proyecto
Nota Las tecnologias utilizadas en este proyecto son las siguientes:
- TypeORM
- Node.js
- Typescript
- Express
- Arquitectura Hexagonal/Arquitectura Limpia/Arquitectura en Capas
- Postgresql
- Kafka
- Docker